繁体   English   中英

ReactJS-根据嵌套路线更改父级中的组件

[英]ReactJS - Change Component in parent depending on nested route

我的应用程序包装在一个组件中,该组件呈现Header,Footer和所有路由的子组件。

在/ admin时,我试图用</HeaderAdmin/>替换<Header />组件。

路线

<Route path='/' component={SiteWrapper} >
  <IndexRoute component={Home} />
  <Route path="admin" component={Admin}>
    <Route path="dashboard" component={Dashboard}/>
  </Route>      
</Route>

SiteWrapper比较

export default class SiteWrapper extends React.Component {
    render() {
        return (
            <div>
                <Header/> // Want to replace with <AdminHeader /> if on /admin
                <div className="container">
                    {this.props.children.props.route.header ? <PageHeader header={this.props.children.props.route.header} /> : null}
                    {this.props.children}
                </div>
                <Footer/>
            </div>
        )
    }
}

为此,我认为您可以通过window.locationthis.props.location.pathname检查路由,其中​​将包含路由名称,如果路由名称为/admin则呈现Header组件,否则render AdminHeader组件。

像这样写:

{ this.prop.location.pathname === '/admin'? <AdminHeader/>: <Header/>} 

您可以使用this.props.location.pathname查找路线名称

export default class SiteWrapper extends React.Component {
    render() {
        return (
            <div>
                {(this.prop.location.pathname === 'admin')? <AdminHeader/>: <Header/>} 
                <div className="container">
                    {this.props.children.props.route.header ? <PageHeader header={this.props.children.props.route.header} /> : null}
                    {this.props.children}
                </div>
                <Footer/>
            </div>
        )
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM