当用户从一个页面/路线导航到另一个页面/路线时,我正在尝试更新react
中的历史记录。但是对于我应该使用什么方法来实现这个以及为什么会感到困惑?
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'))
请帮忙。在此先感谢:)
答案 0 :(得分:7)
基本上,如果您了解使用redux和react-router-redux的原因:
store.dispatch(push('/bug'))
保持导航状态在商店中,推送并导航到路线
虽然
browserHistory.push('/bag')
只需按下并导航到路线。
/ **
*这些操作对应于历史API *相关的 routerMiddleware会在他们到达之前捕获这些事件 * 您的 reducer并重新发布它们作为历史记录的匹配函数。 * /export const push = updateLocation(' push')
我建议在尝试理解差异或工作原理时查看源代码。它有助于学习,也可以深入了解您正在使用的图书馆的最新情况:)
答案 1 :(得分:0)
有两种情况
connected-react-router
与redux存储库集成在一起,则它是push方法,指示历史记录更改位置,因此浏览器URL也会更改,但是,如果您改为使用浏览器历史记录中的push进行导航,则会直接将历史记录更改位置connected-react-router
的{{1}}操作,它将导致呈现适当的组件
因此本质上没有区别,区别在于调用
LOCATION_CHANGE
的push方法将在内部调用历史记录