redux如何连续两次更新store

连续更新两次store数据,第二次会拿到最初始的store
比如

initState ={
    a:'',
    b:''
};
dispatch(setState(a,1))
dispatch(setState(b,1))

最终获得的state结果是

{
    a:'',
    b:1
}

如果换成


setTimeout(()=>{
    dispatch(setState(b,1))
},0)

能拿到正确值了

但是不想代码中存在定时器

reducer如下

const initState = {
    a: '',
    b: ''
}

function test (state = initState, action) {
    switch (action.type) {
    case 'TEST_SET':
        return Object.assign({}, state, { [action.key]: action.value });
    default:
        return state;
    }
}

有解决的办法吗

阅读 3.6k
2 个回答

应该是你的reducer里面default:
return initState,正确的是
return state

react中setState是异步的。不过setState提供了一个回调函数:
你可以这样使用:

setState({
    a:1
},function(){
    console.log('a设置完成了');
    //现在开始设置b
    setState({
        b:1
    })
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题