reactjs - Chain redux 商店更新
问题描述
我想在减速器处理第一个动作后调度一个动作。
这是我的用例。我的组件允许用户选择一个笔记列表(这个列表存储在 redux 中)。根据一些用户操作,可以从此列表中选择一个随机便笺并将其保存在商店中。
在屏幕截图中,您可以看到按钮。“全选”和“取消全选”作用于可能的注释列表。“开始”从列表中选择一个音符。
我遇到的问题涉及“重置按钮”。它应该链接“全选”和“开始”,我不知道该怎么做。我尝试了一个天真的:
const reset = function () {
dispatch(selectAll());
dispatch(pickANote());
}
在这个例子中,我正面临着我认为的数据竞赛。第二个动作从笔记更新列表中挑选笔记。
挖掘互联网,我发现只有基于 API 调用和 redux thunk 的动作链接案例。我遇到的问题是我不知道在处理操作时如何触发某些东西(这在 API 调用中很明显)
所以,有3个解决方案:
- 我错过了一些明显的东西
- 我要去以前没有人去过的地方
- 我正在做一些反模式
欢迎任何帮助。
解决方案
好吧,我找到了我的答案。
毫不奇怪,我在想反模式。
在redux style guide中,有两点引导我找到解决方案。
- 强烈建议调度一个由多个 reducer 处理的操作。
- 强烈建议将逻辑放在减速器中。
结果是我应该分派“原始数据”,然后计算价值缩减器。遵循这条路径,我不依赖存储中已有的值来进行下一次更新,因此,我不会面临任何数据竞争。
推荐阅读
- php - 尝试在 CURL POST 调用中发送文件时出错
- javascript - amCharts3 系列图表可以设置特定的 x 轴吗?
- java - 如何使用 java 流 API 处理切换条件
- html - 如何设置“价格”以在 Woocommerce 中居中对齐?
- sql-server - MSSQL NVarChar(1) 到 .Net 字符
- c++ - 使用基类向量和派生类指针进行对象切片
- django - 如何过滤来自 ansible tower api 查询的结果
- c++ - 为什么将 set::iterator 而不是 const_iterator 传递给函数违反了单一定义规则?
- javascript - useCallback 与类方法 [性能比较]
- typo3 - 在 TYPO3 9.5.5 版本中,PageTitleSeparator 不起作用