我尝试在用户登录后使用查询参数buy=true
将用户从页面重定向到同一页面。用户登录后,在我的服务响应处理程序中,我我试图在react-router-redux
中使用推送功能来推动状态。这没用。 replace
功能也没有。新URL已更新,但我的组件未再次呈现。什么是正确的方法?
这就是我试过的
dispatch(push(/home?buy=true))
dispatch(replace(/home?buy=true))
browserHistory.push(/home?buy=true)
答案 0 :(得分:0)
我认为你可以尝试这样的方法:
创建一个本地状态以使您想要重新渲染的元素
在 ComponentWillReceiveProps 或 ComponentDidUpdate 中,您应该触发 setState 更改当前状态
类似的东西:
constructor() {
this.state = {
hasRefreshed: false
}
componentWillReceiveProps(nextProps) {
const paramsHaveChanged = nextProps.location.query !== this.props.location.query
if (paramsHaveChanged) {
this.setState({ hasRefreshed: true })
}
if (this.state.hasRefreshed) {
this.setState({ hasFrefreshed: false })
}
}
render() {
if (hasRefreshed) return null
return() {
//other elements
}
}