2016-04-02 21 views
2

router 2.0。私はこのようなルート設定をしています。React RouterのRouteでonEnter関数を複数回呼び出す方法

<Route path='/' component={app}> 
    <IndexRoute component={require('./dashboard')} onEnter={logger.log} /> 
    <Route path='signup' component={require('./signup')} onEnter={logger.log} /> 
    <Route path='login' component={require('./login')} onEnter={logger.log} /> 
</Route> 

ご覧のとおり、私はonEnter = {logger.log}を複数回実行していますが、これは軽減されています。

アプリケーションのルートルートにonEnterハンドラを配置しようとしましたが、そのハンドラ関数を1回だけ呼び出しました。私はログインからサインアップに移動するときに、exのために呼ばれることはありません。

すべてのルートのonEnterを宣言して、logger.logを一度だけ呼び出す方法はありますか。何度も繰り返す必要はありません。

答えて

5

あなたはルートルート場所の変更ルートで呼び出され

onChange(prevState, nextState, replace, callback?)

OnChangeフックを使用することができますが、ルート自体は入っていないか、葉どちらも。たとえば、ルートの子が変更されたとき、またはロケーションクエリが変更されたときに呼び出されます。これは、以前のルーター状態、次のルーター状態、および別のパスにリダイレクトする機能を提供します。 thisは、フックをトリガしたルートインスタンスになります。 callbackが4番目の引数としてリストされている場合、このフックは非同期に実行され、callbackが呼び出されるまで移行はブロックされます。あなたは必ずlogger.logが、この場合にnextStateから必要なデータをつかむにする必要があると思いますので、署名が異なるように

<Route path='/' component={app} onChange={logger.log} > 
    <IndexRoute component={require('./dashboard')} /> 
    <Route path='signup' component={require('./signup')} /> 
    <Route path='login' component={require('./login')} /> 
</Route> 

ノートのような

関連する問題