通过键从对象中删除项目

Riz*_*lle 3 javascript object reactjs redux

所以我用一个对象作为 Todo 列表创建了 React Todo App。通过键删除项目与delete 一起使用,但让我返回 boolean 而不是 Object 与其余项目。

  deleteTodo = (id) => {
const { todos } = this.state;
this.setState({
  todos: delete todos[id],
});
Run Code Online (Sandbox Code Playgroud)

我在控制台中得到这个:

Warning: Failed prop type: Invalid prop `todos` of type `boolean` supplied to `TodoList`, expected an object.
Run Code Online (Sandbox Code Playgroud)

jo_*_*_va 6

使用 Redux 时应该使用不可变操作。你不应该直接改变你的状态。

为此,如果您的待办事项在对象中,您可以使用解构从待办事项中排除您的待办事项:

const { todos } = this.state;
const { [id]: _, ...newTodos } = todos;
this.setState({
    todos: newTodos
});
Run Code Online (Sandbox Code Playgroud)

如果待办事项在列表中,并且由于您无法通过数组中的索引解构项目,请使用slice方法,该方法不会修改数组,但会返回修改后的副本:

const { todos } = this.state;
this.setState({
    todos: [...todos.slice(0, id), ...todos.slice(id + 1)];
});
Run Code Online (Sandbox Code Playgroud)