题目描述
有2个函数,一个是handleClick,用来call一个redux的reducer方法,改变store的值。
updatenumber就是用来读取store的值并且使用setState来更新本地的state.
问题来了:因为异步的关系,其实在handclick里的this.updatenumber()更新的值不是最新的,而是上次的,求问这个情况怎么处理?
题目来源及自己的思路
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
handleClick = selected =>{
this.props.dispatch({type:"COMPLETE",selected:selected})
this.updatenumber();
}
updatenumber = () =>{
this.setState({num:this.props.todolists.reduce((acct,item)=>{
if(item[1]===false){
acct++;
}
return acct;
},0)})
}
最后自己搞定了,引起原因是dispatch是异步,虽然dispatch写在了前面,但是其实是先执行了setstate,然后才dispatch了,解决方法就是要不然async/await控制下,要不然就把这个状态丢进redux的store里,完结~