React-Redux示例具有非纯函数。我以为减速器必须是纯净的?

时间:2018-10-10 19:57:13

标签: reactjs redux react-redux

Redux表示处理状态(归约器)have to be pure的动作。

但是,他们查看了React-Redux文档,展示了如何向Todos列表中添加新的Todo任务,并且该函数为新的Todo任务生成了新的标识符。这显然不是纯粹的。再次调用同一函数将不会产生相同的输出。

有一个例子(来自this page):

// redux/actions.js
import { ADD_TODO } from "./actionTypes";

let nextTodoId = 0;
export const addTodo = content => ({
  type: ADD_TODO,
  payload: {
    id: ++nextTodoId,
    content
  }
});

// ... other actions

这是否意味着我必须忘记到目前为止所学到的一切?

1 个答案:

答案 0 :(得分:5)

在我看来,这是一个动作创造者,而不是减速器。动作创作者不必一定是纯粹的。

  

动作创建者也可以是异步的并且有副作用。

https://redux.js.org/basics/actions#action-creators