reactjs - 如何使用 Flux 管理异步 Store 操作?

标签 reactjs reactjs-flux

在关于 Flux 架构的 Facebook 演讲中,Jing 提到 at 12:17调度程序强制在当前操作被存储完全处理之前不能调度任何操作。

https://img.youtube.com/vi/nYkdrAPrdcw/0.jpg

The dispatcher here is the main piece that enforces that there's no cascading effects; once an action goes into the store, you can't put another one in until the stores are completely finished processing it.

我的问题是,如何正确处理可能从存储中启动的长时间运行的异步操作(例如 Ajax 请求,或处理其他一些外部异步 API)——任何阻止完成的事情操作分派(dispatch)(例如,等待用 Ajax 请求的结果解决 promise )可能会阻止用户分派(dispatch) UI 生成的操作。

最佳答案

根据我的理解,依赖于 Ajax 等的异步操作不应阻止该操作分派(dispatch)给所有订阅者。

您将为用户操作设置一个单独的操作,例如 TodoMVC 示例中的 TODO_UPDATE_TEXT ,以及在服务器返回时调用的操作,例如 TODO_UPDATE_TEXT_COMPLETED (或也许只是更通用的东西,例如包含最新属性的新副本的 TODO_UPDATE_COMPLETED)。

如果您想要进行乐观更新以立即向用户显示其更改的效果,您可以立即更新存储以响应用户操作(然后在服务器返回权威数据时再次更新)。如果您想等待服务器,您可以让存储仅更新自身以响应服务器触发的操作。

关于reactjs - 如何使用 Flux 管理异步 Store 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23635964/

相关文章:

javascript - 子 react 组件中的可变上下文和executeAction

javascript - 自定义 react 下拉组件在每个用户输入上重新呈现

javascript - 从 API ReactJS 获取特定数据

javascript - 从 Recharts 的另一个组件获取数据

javascript - 更新属性时如何避免状态变化

javascript - react Hook : What is the disadvantage of directly changing the nested object?

javascript - react/flux- 子组件用户事件 - 是否应该通过调度程序路由所有内容

javascript - 使用 componentWillRecieveProps 从 App.js 接收 Prop

javascript - React onChange 事件不会触发

javascript - 动态插入的 React 组件