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

Ale*_*lke 0 reactjs redux react-redux

Redux说处理状态的行动(Reducers)必须是纯粹的.

但是,查看React-Redux文档,它们展示了如何将新的Todo任务添加到Todos列表中,并且该函数为新的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
Run Code Online (Sandbox Code Playgroud)

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

Tru*_*ill 5

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

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

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