状态包含在反应还原行为与减速器中包含的反应中

时间:2016-08-18 21:42:01

标签: javascript reactjs redux state react-redux

我正在学习{-3}}中的todo示例中的react-redux,并且不明白为什么nextTodo的id保存在actions而不是reducer中。这不应该被视为国家,因为随着更多的待办事项增加,它会随着时间的推移而改变吗?对我来说,动作的目的是从用户获取一些输入并将其转换为动作,而不是生成状态。减速器的工作是创建状态并根据给定的动作进行更改。

行动守则

let nextTodoId = 0

export const addTodo = (text) => {
  return {
    type: 'ADD_TODO',
    id: nextTodoId++,
    text
  }
}

减速机代码

const todo = (state, action) => {
  switch (action.type) {
    case 'ADD_TODO':
      return {
        id: action.id,
        text: action.text,
        completed: false
      }
...
}

1 个答案:

答案 0 :(得分:3)

那是因为减速器有望成为纯粹的功能。也就是说,如果使用相同的参数多次运行它,它将返回相同的结果,并且应用程序其余部分的状态不会更改。

由于这个原因,reducer无法确定ID,就好像它一样,它会导致重复运行有不同的结果(即不同的返回值)。

减速器的工作不是创造状态。它的工作是获得现有状态和增量(即动作)并返回新状态。它应该可靠地完成。