在Redux todo示例中创建“复制”功能

时间:2017-06-18 18:33:55

标签: reactjs redux todomvc

在Redux Todo示例中。

https://github.com/reactjs/redux/tree/master/examples/todomvc

您将如何创建“复制”功能。基本上,使用现有的待办事项数据(待办事项的名称)添加新的待办事项。

我想知道这是否是通过行动完成的?还是在减速机?还是必须做CRUD后端响应?

1 个答案:

答案 0 :(得分:0)

我个人会将复制功能放在reducer中。这仍然需要一个新的行动。它的type将是COPY_TODO,并且它还会包含您要复制的待办事项的id

减速器看起来像这样:

case COPY_TODO: {
  const todoToCopy = state.find(todo => todo.id === action.id);

  if (todoToCopy) {
    return [
      {
        ...todoToCopy,
        id: state.reduce((maxId, todo) => Math.max(todoToCopy.id, maxId), -1) + 1,
      },
      ...state
    ];
  }

  return state;
}

这会找到状态中的现有待办事项,复制它并将id更新为当前最高id之上的1,以便它是唯一的。