【问题标题】:React-Redux example has a non-pure function. I thought reducers had to be pure?React-Redux 示例有一个非纯函数。我认为减速器必须是纯的?
【发布时间】:2019-03-15 19:34:54
【问题描述】:

Redux 表示处理状态的操作(Reducers)have to be pure

不过,查看 React-Redux 文档,他们展示了如何将新的 Todo 任务添加到 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

这是否意味着我必须忘记迄今为止学到的一切?

【问题讨论】:

  • 那不是reducer,那是action creator。
  • 不管这个事实,那是 React-Redux 指南。它教如何将 Redux 与 React 一起使用,而不是如何使用 Redux。即使 Redux 代码存在问题,我也会认为它们过于简单化了。
  • 这是我们新的 React-Redux 文档重写的一部分。请注意,React-Redux 文档现在可以在 react-redux.js.org 的已发布站点上找到。此外,根据答案,这是一个动作创建者,而不是减速器。
  • @Leandro,啊!是的。嗯...他们说要小心,因为 Actions 和 Action Creators 是不同的。
  • @markerikson,实际上文档在特定点上是正确的“我们的 addTodo 动作创建器如下所示:” 区分“动作”和“动作”是初学者的问题创造者”。

标签: reactjs redux react-redux


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2019-11-22
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多