React-router browserHIstory.push()不重定向

时间:2018-04-14 00:59:47

标签: reactjs react-router

我在StackOverflow上看到了很多类似的问题,但建议的解决方案对我不起作用。我也不知道如何最好地应用它,因为我是React的新手。我的代码的MCVE如下:

export default class ClDashboard extends Component {
  constructor(props) {
    super(props)
    this.state = {
      start: this.props.location.query.start,
      end: this.props.location.query.end,
      period: this.props.location.query.period,
      autoRotate: false
    }
  }

  componentWillMount() {
    this.setState(this.newProps(this.props))
  }

  componentDidMount() {
    if (this.state.autoRotate) {
      let nextID = this.getNextID(this.props.route.clientInfo.farms)

      let [startDate, endDate] = this.getAutoRotateDates()
      let timeQuery = '/?start=' + startDate + '&end=' + endDate

      let farmChange = this.farmChange.bind(this)
      let farmChangeHandle = () => {
        if (this.state.autoRotate) { 
          farmChange(nextID, timeQuery)
        }
      }
      setTimeout(farmChangeHandle, 3000)
    }
  }

farmChange = (ID, timeQuery) => {
        browserHistory.push(this.state.url + ID + timeQuery)
    }

基本上发生的是,如果某个标志getNextID()设置为true,我试图在一组ID之间轮换(autoRotate按顺序获取下一个ID)。但是,虽然URL更改为下一个ID,但页面不会反映更改。

我尝试了以下事项: - 我不认为here的解决方案适用于我的案例,但如果是的话,我想知道如何解决。 - 我的react-router版本是3.0.5,所以像these for v4这样的解决方案不起作用 - 尝试添加componentWillReceiveProps(),如建议的here,但这也无济于事。

有一件奇怪的事情是,如果我将if (this.state.autoRotateFarms)中的所有内容复制到componentWillReceiveProps(),那么它可以正常工作,但即使您离开后,它似乎也会将页面重定向回序列中的下一个ID。

我该如何解决这个问题?

0 个答案:

没有答案