【发布时间】:2017-05-11 00:59:20
【问题描述】:
我最近实现了 ReactTransitionsGroup 来使用 React Router 为我所有的页面转换设置动画(Velocty 组件只是 ReactTransitionsGroup 的一个包装器,所以在实践中是一样的):
render () {
return (
<div className="app-layout">
<NavBar location={this.props.location} />
<VelocityTransitionGroup enter={{ animation: 'pageTransitionIn' }} leave={{ animation: 'pageTransitionOut' }}>
{React.cloneElement(this.props.children, {
key: this.props.location.pathname,
})}
</VelocityTransitionGroup>
<TimeOutModal />
<Notifications />
</div>
);
}
在我的注册表单中,我有一个表单组件,一旦注册请求成功响应,道具就会更新,并且该组件将触发重定向到下一个注册步骤。
class SignUp extends Component {
componentDidUpdate () {
if (this.props.signup.success) {
hashHistory.push('/confirm-signup')
}
}
render() {//....//}
}
问题是,一旦触发重定向,我进入一个无限循环,因为 ReactTransitionsGroup 使组件停留几毫秒,再次触发重定向。
我设法“修复”它,在重定向上使用 setTimeout,但我觉得这个解决方案并不优雅:
componentDidUpdate () {
if (this.props.signup.success) {
setTimeout(() => {
hashHistory.push('/confirm-signup')
}, 500)
}
}
您是否找到任何其他解决此问题的方法?
提前致谢!
【问题讨论】:
标签: javascript reactjs redirect react-router