react-router 2.0.0-rc5で現在のルートを取得する方法 質問する

react-router 2.0.0-rc5で現在のルートを取得する方法 質問する

以下のようなルーターがあります:

<Router history={hashHistory}>
    <Route path="/" component={App}>
        <IndexRoute component={Index}/>
        <Route path="login" component={Login}/>
    </Route>
</Router>

私が達成したいことは次のとおりです:

  1. /loginログインしていない場合はユーザーをリダイレクトする
  2. /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

おすすめ記事