代码如下。是一个用户登出的函数。点击登出更改state中的login为false并跳转到首页。一开始我用window.location.href='/';实现,发现因为setState是异步的,如果不写在箭头函数里做参数传进setState中,会先触发跳转,但是login的状态还没变。
教程里老师用的是this.props.history.push('');获得路由信息后跳转。
这里没写到setState中也不会触发异步问题。请问是为什么呢?是因为因为要用props所以要等state更新完么?求解,谢谢
另外两种跳转方法有什么区别?哪一个更优?
handleLogOut(){
axios.get('http://www.dell-lee.com/react/api/logout.json',{withCredentials:true})
.then(res=>{
if(res.data.data.logout){
message.success('退出成功');
// this.setState(()=>{return {
// login:false
// }},()=>{
// window.location.href='/';
// })
this.setState({
login:false
})
this.props.history.push('');
}
})
}