2017-04-27 41 views
2

ユーザがあるページ/ルートから別のページ/ルートにナビゲートすると、reactの履歴を更新しようとしています。しかし、これを達成するためにどのような方法を使うべきなのか、そしてその理由について混乱していますか?react-router-reduxの "push"メソッドとreact-routerの "browserHistory"の違いは何ですか?

import { browserHistory } from 'react-router' 
browserHistory.push('/bag') 

OR

import { routerMiddleware, push } from 'react-router-redux' 
const middleware = routerMiddleware(browserHistory) 
const store = createStore(
    reducers, 
    applyMiddleware(middleware) 
) 

store.dispatch(push('/bag')) 

助けてください。事前に感謝:)

答えて

4

基本的に、あなたが再来と反応し、ルータ - Reduxのを使用する理由を理解している場合:

store.dispatch(push('/bug'))は、店舗内のナビゲーション状態を保っている、ルート

にプッシュしてナビゲート

browserHistory.push('/bag')は、ルートにプッシュしてナビゲートするだけです。

From the source code itself

/**
*これらのアクションは、歴史のAPIに対応しています。
* ルーターミドルウェアは
*還元剤に達する前にこれらのイベントをキャプチャし、履歴に一致機能としてそれらを再発行します。 */

輸出のconstプッシュ= updateLocation(「プッシュ」)

同上の違いやどのように物事が仕事を理解しようとすると、ソースコードに探してお勧めします。学習にも良いし、使用しているライブラリで何が起こっているのかを深く理解していることもあります:)

+0

履歴と店舗の履歴を同期するのに、 const reduxHistory = syncHistoryWithStore(browserHistory、store); –

+0

は、私が探していたものに非常に近いので、答えを受け入れています。 browserHistoryとstoreを同期させない場合、react-router-reduxのpushメソッドを直接使用して、ストア内のルーティング履歴を維持することができます。 –

関連する問題