推送一个新URL,其中只有前一个url的更改是一个查询参数

时间:2017-02-24 17:05:13

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

我尝试在用户登录后使用查询参数buy=true将用户从页面重定向到同一页面。用户登录后,在我的服务响应处理程序中,我我试图在react-router-redux中使用推送功能来推动状态。这没用。 replace功能也没有。新URL已更新,但我的组件未再次呈现。什么是正确的方法?

这就是我试过的

dispatch(push(/home?buy=true))
dispatch(replace(/home?buy=true))
browserHistory.push(/home?buy=true)

1 个答案:

答案 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
  }
}