redux - 对 redux 存储的更改是否同步发生?

标签 redux react-redux flux

这个问题在这里已经有了答案:





Is store.dispatch in Redux synchronous or asynchronous

(2 个回答)


4年前关闭。




si 它保证到 store.dispatch 返回的时候,状态已经改变了吗?如果是这样,那么为什么不作为调度调用的结果返回 newState 呢?

store.dispatch( action1() );
store.dispatch( action2() );

例如,我将在 action1 中登录用户,然后我想触发另一个操作,该操作将使用 LOGEDIN 用户信息进一步更改状态。所以我想确保 action2 不会触发,除非 action1 已经成功改变了状态。

那么,到 store.dispatch 返回时,这是否保证状态已经改变?

示例 reducer :
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返回,保证 root reducer 已经运行完毕,当前状态值已经被换出,并且已经通知订阅者。

关于redux - 对 redux 存储的更改是否同步发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540933/

相关文章:

javascript - 尝试遵循 redux.js.org 教程时无法解决 "Actions must be plain objects. Use custom middleware for async actions."错误

javascript - 为什么店里没有看到回流 Action ?

Redux Saga 异步/等待模式

javascript - 获取 POST 输入错误的意外结束

javascript - 使用 React 和 Redux Hooks,为什么我的操作没有触发?

ruby-on-rails - react 新手: sharing state across unlinked components

reactjs - 无法读取 ReactJS Redux 表单中未定义错误的属性 'parentNode'

json - 从传统的 Laravel/Rails 应用程序迁移到 React.js 生态系统。需要在前端进行数据管理

reactjs - React + React Router 中的范围界定

reactjs - redux-undo 的初始化历史记录不会填充过去或 future