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”变量引用