如何在一条路线上为不同用户显示不同的组件?

时间:2017-10-24 14:20:00

标签: javascript reactjs react-router

我需要在一条路线中显示不同的组件。

我的授权路由器如下:

<Route authorize={['admin']} component={Authorization}>
    <Route path='/home' component={Home} />
</Route>

Authorization组件中,我必须检查用户是否可以访问此路由。 但问题是如何在同一条路线上显示不同的组件?

这样的事情不起作用:

<Route authorize={['admin']} component={Authorization}>
    <Route path='/home' component={AdminHome} />
</Route>
<Route authorize={['manager']} component={Authorization}>
    <Route path='/home' component={MangerHome} />
</Route>

1 个答案:

答案 0 :(得分:0)

只定义一个路径并创建一个包装器组件,在包装器组件中检查条件并呈现不同的组件。

像这样:

<Route authorize={['manager', 'admin']} component={Authorization}>
    <Route path='/home' component={WrapperComponent} />
</Route>

现在从Authorization组件传递一些boolWrapperComponent,以决定要渲染哪个组件。

内部WrapperComponent

render(){
   if(this.props.isAdmin)
      return <Home  />
   return < MangerHome />
}