如何在react.js中更新状态?

时间:2017-06-16 03:17:36

标签: reactjs

我想询问是否有更好的方法来更新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)]
    })

}

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
    })

}