2017-04-27 105 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

事實上,如果你理解的理由讓你使用終極版和反應路由器 - 終極版:

store.dispatch(push('/bug'))是保持導航狀態在店裏,推動並導航到航線

browserHistory.push('/bag')只是推並導航到路線。

From the source code itself

/**
*這些動作對應的歷史API。
*關聯的 路由器中間件會在這些事件到達
*您的 縮減器之前捕獲這些事件,並將它們重新發布爲歷史記錄中的匹配函數。 */

出口常量推=更新位置(「推」)

標識試圖理解差異或如何工作的事情時,建議尋找到的源代碼。它對學習很有幫助,也可以深入理解你正在使用的庫所發生的變化:)

+0

如果已經在使用下面的代碼來同步歷史記錄,那該怎麼辦? const reduxHistory = syncHistoryWithStore(browserHistory,store); –

+0

接受答案,因爲它非常接近我正在尋找的。如果沒有將browserHistory與store同步,可以直接使用react-router-redux的push方法來維護商店中的路由歷史記錄。 –

相關問題