React-Redux 数据获取后setState异步怎么处理?

新手上路,请多包涵

题目描述

有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)})
}

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 3k
2 个回答
✓ 已被采纳新手上路,请多包涵

最后自己搞定了,引起原因是dispatch是异步,虽然dispatch写在了前面,但是其实是先执行了setstate,然后才dispatch了,解决方法就是要不然async/await控制下,要不然就把这个状态丢进redux的store里,完结~

不需要updatenumber这个方法 store数据变了会rerender

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题