WithRouter无法在componentDidUpdate

时间:2018-08-24 12:45:46

标签: javascript reactjs react-router

像这样的简短代码。

componentDidUpdate(preProps) {
  if ( preProps.somethingFeedback === 'whatINeed') {
    this.props.feedbackReducer()
    this.props.toggleExitAnimation()
    this.timeoutHandle = setTimeout(() => {
      this.props.history.push('path')
    }, 1000)
  }
}

首先,我使用反馈减少器来更新当前组件的道具。在componentDidUpdate方法中,我捕获了此道具,有条件地调度了另外两个reducer。由于动画的切换,在路由之前我也需要超时。

该组件包装有react-redux的连接,嵌套在react-router的withRouter hoc函数中。

我找到了原始代码,feedbackReducer函数将导致自动路由。如果我评论feedbackReducer函数,则this.props.history.push将不起作用。

编辑

问题通过下面的代码解决。

componentDidUpdate(preProps) {
  if ( preProps.somethingFeedback === 'whatINeed') {
    this.props.toggleExitAnimation()
    this.timeoutHandle = setTimeout(() => {
      this.props.feedbackReducer()
      this.props.history.push('path')
    }, 1000)
  }
}

就我的粗心而言,feedbackReducer具有触发路由的关键反馈,因此它应该与history.push一起超时。

0 个答案:

没有答案