像这样的简短代码。
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一起超时。