私はreactjs、redux、およびreact-router(redux-simple-router)に基づいてWebサイトを構築していますが、ユーザーが認証されているかどうかに応じてルートパスを共有する方法を理解するのに苦労しています。
私はこの例を探していましたhttps://github.com/reactjs/react-router/tree/master/examples/auth-with-shared-rootですが、正直言ってうまくいきませんでした。
私は2つの異なるレイアウトを持っています。1 つ目はパブリック レイアウトで、ユーザーが認証されていない場合に表示されます。ここから、ログインページと登録にアクセスできます。
ユーザーが認証された後、完全に異なるレイアウトである内部アプリを表示したいのですが、同じルート URL で実行します。
ユーザーが認証されていない場合:
<Route path='/' name='homepage' component={SiteLayout}>
<IndexRoute component={HomeView} />
<Route path='/login' name='login' component={LoginView} />
<Route path='/join' name='join' component={RegistrationView} />
<Route path='/404' component={NotFoundView} />
<Redirect from='*' to='/404' />
</Route>
認証後、同じルート URL を保持します。
<Route path='/' name='feeds' component={InternalLayout}>
<IndexRoute component={FeedsView} />
<Route path='/profile' name='login' component={ProfileView} />
<Route path='/settings' name='join' component={SettingsView} />
<Route path='/search' name='join' component={SearchView} />
</Route>
フェイスブックと同じです。
私の質問は (そして、例を提供できれば素晴らしいことです): 認証ステータスに応じて、同じ URL で異なるレイアウトをレンダリングするにはどうすればよいですか?
PD: メソッド hasToken を使用して、認証ステータス (JWT) を格納する Token クラスがあります。
この例では JSX 構文を使用していますが、目的の結果を得るために構成構文に切り替える必要があるかどうかはわかりません。
どんな助けでも大歓迎です。