来自Redux操作的browserHistory.push(..)更改了URL,但没有触发重新呈现

时间:2017-03-14 18:06:34

标签: reactjs redux react-router react-router-redux

我尝试在Fetch请求之后使用React路由器从Redux操作创建者进行重定向。

我使用browserHistory方法从动作创建者那里推送,如下所示:

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

这给了我两个问题:

1)历史记录basename未加前缀。

配置路由器历史记录时,我设置了basename值:

useRouterHistory(createHistory)({
    basename: '/foo'
});

browserHistory.push('/summary')并不是basename为网址添加前缀的basename。我受到历史文档(https://github.com/reacttraining/history#using-a-base-url)的印象,它会加上前缀。

作为第一期的临时解决方法,我刚刚将push硬编码到push。我的下一个问题是哪个游戏。

2)网址在浏览器中更新,但网页不会重新呈现。

如果我在Build Setting发生后刷新页面,那么页面会呈现正确的路线,但似乎推送不会触发状态更改以强制渲染。

我确实遇到了这个react-router-redux,但是阅读文档后,听起来似乎没有必要去做我之后的事情:

  

将Redux与React一起使用不需要此库   路由器。您可以将两者一起使用,而无需任何额外的   库。如果你关心录音,坚持和   使用时间旅行重放用户操作。如果你不在乎   这些功能,只需直接使用Redux和React Router。

任何人都可以看到我出错的地方吗?我确定它只是我想念的东西而不是错误。

我目前正在使用:

  • Redux v3.6.0
  • React Router v3.0.0
  • 历史v3.3.0

2 个答案:

答案 0 :(得分:1)

为了在网址更改时重新加载页面,页面组件需要从react-router接收历史记录或位置道具。 所以在道具中添加一个或另一个。

答案 1 :(得分:0)

就我而言,移动前页面中有错误。 这是与生命周期有关的错误。 纠正错误后,我们确认正常运行。 对componentWillUnmount要特别小心。 否则,请查看routerReducer和syncHistoryWithStore。