reactjs - React-Redux 示例有一个非纯函数。我认为减速器必须是纯的?
问题描述
Redux 说处理状态的动作(Reducers)必须是 pure。
不过,查看 React-Redux 文档,他们展示了如何将新的 Todo 任务添加到 Todo 列表中,并且该函数会为新的 Todo 任务生成一个新的标识符。这显然不是纯粹的。再次调用相同的函数将不会产生相同的输出。
有一个例子(来自这个页面):
// redux/actions.js
import { ADD_TODO } from "./actionTypes";
let nextTodoId = 0;
export const addTodo = content => ({
type: ADD_TODO,
payload: {
id: ++nextTodoId,
content
}
});
// ... other actions
这是否意味着我必须忘记迄今为止学到的一切?
解决方案
在我看来,这是一个动作创建者,而不是减速器。动作创作者不必是纯粹的。
动作创建者也可以是异步的并且有副作用。
推荐阅读
- xamarin - 将 Xamarin Forms 与 MVVM 一起使用,我的绑定不会更新
- excel - VBA相同的nrs在if语句中不匹配
- sql - 使用键名过滤pyspark中的字典
- reactjs - 如何在处理函数的 setInterval 中使用 React 状态变量
- jupyter-notebook - Nbextension 未显示完整列表
- r - 有没有办法在 data.frame 中建立行的平均值?
- flutter - 显示不使用 StreamBuilder 存储的姓名、电话号码等 Firestore 数据
- javascript - 在JavaScript中的数组中每n个元素插入一个元素
- shopify - “shopify login” 在 Linux Manjaro 上不起作用(在终端中使用 shopify cli)
- excel - Excel VBA:检查是否存在谷歌驱动器快捷方式