1. ホーム
  2. javascript

[解決済み] react-router 2.0.0-rc5で現在のルートを取得する方法

2023-05-16 04:21:22

質問

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

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

以下は、私が実現したいことです。

  1. ユーザーを /login にリダイレクトします。
  2. ユーザーがアクセスしようとした場合 /login にアクセスしようとした場合、root にリダイレクトします。 /

でユーザーの状態をチェックしようとしています。 App 's componentDidMount のようにすればいい。

if (!user.isLoggedIn) {
    this.context.router.push('login')
} else if(currentRoute == 'login') {
    this.context.router.push('/')
}

ここで問題なのは、現在のルートを取得するためのAPIが見つからないことです。

私が見つけたのは このクローズされた問題 では Router.ActiveState mixin とルートハンドラの使用が提案されていましたが、この 2 つの解決策は現在では非推奨となっているようです。

どのように解決するのですか?

さらにいくつかの文書を読んだ後、私は解決策を見つけました。

https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/location.md

注入されたプロパティにアクセスする必要があるだけです location のようなコンポーネントのインスタンスにアクセスする必要があります。

var currentLocation = this.props.location.pathname