redux 存储的更改是否同步发生?
does changes to redux store occur synchronous?
si 它保证到 store.dispatch returns 时,状态已经改变了?如果是这样,那么为什么不 return newState 作为调度调用的结果?
store.dispatch( action1() );
store.dispatch( action2() );
一个示例我将在 action1 中登录用户,然后我想触发另一个将使用 LOGEDIN 用户信息进一步更改状态的操作。所以我想确保除非 action1 已经成功更改状态,否则 action2 不会触发。
所以,到 store.dispatch returns 时,是否保证状态已经改变?
示例减速器:
function reducer(state, action){
// please ignore that i will mutate state, just for sake of simplicity of example.
if(action.type==='ACTION1'){
state.user_id = action.payload;
return state;
}
if(action.type==='ACTION1'){
state.value2 = state.user_id * action.whatEver;
return state;
}
return state;
}
我目前的保护措施是我使用 React.component 来监视对 user_id 的更改,然后我启动 action2,但是如果 Redux Actions 是同步的,那么我可以在 action1 之后直接启动 action2 并减少我的样板文件。
是的,默认情况下 dispatch()
是 100% 同步的。中间件可以拦截动作并可能延迟它们或以其他异步方式修改行为。但是,除此之外,到 dispatch
returns 时,可以保证根 reducer 已完成 运行,当前状态值已被换出,并且已通知订阅者.
si 它保证到 store.dispatch returns 时,状态已经改变了?如果是这样,那么为什么不 return newState 作为调度调用的结果?
store.dispatch( action1() );
store.dispatch( action2() );
一个示例我将在 action1 中登录用户,然后我想触发另一个将使用 LOGEDIN 用户信息进一步更改状态的操作。所以我想确保除非 action1 已经成功更改状态,否则 action2 不会触发。
所以,到 store.dispatch returns 时,是否保证状态已经改变?
示例减速器:
function reducer(state, action){
// please ignore that i will mutate state, just for sake of simplicity of example.
if(action.type==='ACTION1'){
state.user_id = action.payload;
return state;
}
if(action.type==='ACTION1'){
state.value2 = state.user_id * action.whatEver;
return state;
}
return state;
}
我目前的保护措施是我使用 React.component 来监视对 user_id 的更改,然后我启动 action2,但是如果 Redux Actions 是同步的,那么我可以在 action1 之后直接启动 action2 并减少我的样板文件。
是的,默认情况下 dispatch()
是 100% 同步的。中间件可以拦截动作并可能延迟它们或以其他异步方式修改行为。但是,除此之外,到 dispatch
returns 时,可以保证根 reducer 已完成 运行,当前状态值已被换出,并且已通知订阅者.