我想询问是否有更好的方法来更新react.js中的状态。
我在下面写了这段代码,但只是更新状态需要很多步骤,我想知道我是否正确地做了。
有什么建议吗?
immutable.js怎么样?我知道它的名字,但我从来没有使用它,也不太了解它。
toggleTodoStatus(todoId) {
const todosListForUpdate = [...this.state.todos];
const indexForUpdate = this.state.todos.findIndex((todo) => {
return todo.id === todoId;
});
const todoForUpdate = todosListForUpdate[indexForUpdate];
todoForUpdate.isDone = !todoForUpdate.isDone;
this.setState({
todos: [...todosListForUpdate.slice(0, indexForUpdate), todoForUpdate, ...todosListForUpdate.slice(indexForUpdate + 1)]
})
}
答案 0 :(得分:0)
您正在使用您不需要的额外步骤。直接将值设置为克隆对象并重新回到状态将起作用
toggleTodoStatus(todoId) {
const todosListForUpdate = [...this.state.todos];
const indexForUpdate = this.state.todos.findIndex((todo) => {
return todo.id === todoId;
});
todosListForUpdate[indexForUpdate].isDone = !todosListForUpdate[indexForUpdate].isDone;
this.setState({
todos: todosListForUpdate
})
}