2017-10-26 27 views
2

私は反応して次のことをやってみることに新しいです: 私のシステムでは、ユーザには異なるロール(regular、manager、admin)が割り当てられています。 役割ごとに、私は別のRouterオブジェクトを使用します。 AdminRouterと私のManagerRouterの両方で、/ dashboardへのパスが必要ですが、それぞれ別のコンポーネントに誘導されます。複数のリアクションルータ - 同じパス

 <Router> 
     <div> 
      <Switch> 
       <AdminRouter path="/dashboard" component={AdminDashboardPage}/> 
       <ManagerRouter path="/dashboard" component={ManagerDashboardPage} /> 
       <Route component={NotFoundPage}/> 
      </Switch> 
     </div> 
    </Router> 

(ユーザーの役割に基づいて)一部のルータを無視するように決定するロジックを追加することはできますか?たとえば、ユーザがManagerの場合、ルータはすべてのAdminRouterエレメントをスキップします。

+0

にオプションのパラメータに見たことがありますか? <経路パス= "/ to/page /:pathParam?"コンポーネント= {MyPage} /> – Akhil

答えて

1

あなたのルータは2つの異なるコンポーネントに対して同じ経路を持つことはできません。常に最初のルータをレンダリングします。

代わりに何をレンダリングするかを決定するラッパーコンポーネントを作成することができます。例えば

<Router> 
    <div> 
    <Switch> 
    <Route exact path="/dashboard" component={DashboardWrapper}/> 
    <Route component={NotFoundPage}/> 
    </Switch> 
    </div> 
</Router> 

DashboardWrapper

class DashboardWrapper extends Component { 
    ... 
    render(){ 
    const { adminUser } = this.props 
    return (
     <div> 
     { 
      adminUser 
      ? <AdminDashboard /> 
      : <ManagerDashboard /> 
     } 
     </div> 
    ) 
    } 
    ... 
} 
関連する問題