Redux getState是否总是在调度调用后返回最新状态?

Redux getState是否总是在调度调用后返回最新状态?,redux,redux-thunk,Redux,Redux Thunk,如果我有这样的代码 dispatch({ type: actionTypes.ABCD, ...newInfo, }); const state = getState(); 我能100%相信州是最新的州吗?或者调度是异步的,我无法保证状态是否已更新?是。调度调用本身是100%同步的。当分派返回时,root reducer已运行,状态值已更新,并且已通知所有订户。因此,是的,在分派之后立即调用getState将返回最新的值 需要注意的是,任

如果我有这样的代码

    dispatch({
        type: actionTypes.ABCD,
        ...newInfo,
    });
    const state = getState();
我能100%相信州是最新的州吗?或者调度是异步的,我无法保证状态是否已更新?

是。调度调用本身是100%同步的。当分派返回时,root reducer已运行,状态值已更新,并且已通知所有订户。因此,是的,在分派之后立即调用getState将返回最新的值

需要注意的是,任何中间件都可以拦截、延迟或修改已调度的操作。因此,最终答案取决于您安装的中间件以及它们的配置方式。

是。调度调用本身是100%同步的。当分派返回时,root reducer已运行,状态值已更新,并且已通知所有订户。因此,是的,在分派之后立即调用getState将返回最新的值


需要注意的是,任何中间件都可以拦截、延迟或修改已调度的操作。因此,最终的答案取决于您安装的中间件以及它们的配置方式。

getState确实会检索最新的值,但是如果您没有改变不应该改变的状态,例如使用Immer库,则必须小心将其设置为action creator中的“state”变量

例如:

let state = getState();
dispatch({
    type: actionTypes.someStateChange,
    newInfo1: newInfo
});
dispatch({
    type: actionTypes.someOtherAction,
    infoDependentOnNewInfo1: state.newInfo1.property
});

这将不会像预期的那样运行,因为上面定义的状态将具有旧状态,因为第一次分派创建了一个新的不可变状态,该状态未被“state”变量引用

getState确实检索最新的值,但是如果您没有改变您不应该改变的状态,例如使用Immer库,那么如果您在action creator中将其设置为“state”变量,则必须小心

例如:

let state = getState();
dispatch({
    type: actionTypes.someStateChange,
    newInfo1: newInfo
});
dispatch({
    type: actionTypes.someOtherAction,
    infoDependentOnNewInfo1: state.newInfo1.property
});
这将不会像预期的那样运行,因为上面定义的状态将具有旧状态,因为第一次分派创建了一个新的不可变状态,该状态未被“state”变量引用