以下のようなルーターがあります:
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Index}/>
<Route path="login" component={Login}/>
</Route>
</Router>
私が達成したいことは次のとおりです:
/login
ログインしていない場合はユーザーをリダイレクトする/login
ユーザーがすでにログインしているときにアクセスしようとした場合は、ルートにリダイレクトします。/
そこで、 のユーザーの状態をチェックして、次のようなことを実行しようとしていApp
ますcomponentDidMount
。
if (!user.isLoggedIn) {
this.context.router.push('login')
} else if(currentRoute == 'login') {
this.context.router.push('/')
}
ここでの問題は、現在のルートを取得するための API が見つからないことです。
私は見つけたこの終了した問題Router.ActiveState ミックスインとルート ハンドラーの使用が提案されましたが、これら 2 つのソリューションは現在非推奨になっているようです。
ベストアンサー1
さらにいくつかのドキュメントを読んだ後、解決策を見つけました:
https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/location.md
location
次のようにコンポーネントのインスタンスの注入されたプロパティにアクセスする必要があります。
var currentLocation = this.props.location.pathname