还原存储的更改是否会同步发生?

Zal*_*oza 2 flux redux react-redux

因为它保证按时间store.dispatch返回,状态已经改变了?如果是这种情况,那么为什么不通过调度调用返回newState?

store.dispatch( action1() );
store.dispatch( action2() );
Run Code Online (Sandbox Code Playgroud)

一个示例,我将在action1中登录用户,然后我要触发另一个将使用LOGEDIN用户信息来进一步更改状态的操作。因此,我想确保除非action1已成功更改状态,否则不会触发action2。

因此,在store.dispatch返回时,是否保证状态已经改变?

减速器示例:

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;
}
Run Code Online (Sandbox Code Playgroud)

我当前的保护是我使用React.component监视对user_id的更改,然后触发action2,但是如果Redux Actions是同步的,则可以在action1之后直接触发action2并减少我的样板。

mar*_*son 6

是的,默认情况下dispatch()为100%同步。中间件可以拦截动作,并可能以其他异步方式延迟动作或修改行为。但是,dispatch除此之外,可以保证在返回时间之前,根减速器已完成运行,已交换了当前状态值,并已通知订户。