2017-06-16 6 views
0

react.jsの状態を更新する方法があるかどうか尋ねたいと思います。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)] 
    }) 

} 
+2

'CONST newTodosを動作するバック状態にrestting = this.state.todos.map(T => t.id === todoId?{... T、isDone :!t.isDone}:t); '(今日の時点では、オブジェクトの広がりのために' stage-3'が必要です) – zerkms

答えて

1

あなたは必要のない余分なステップを使用しています。直接クローン化されたオブジェクトに値を設定し、

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

} 
+0

ああそうです!ありがとう!! – hytm

+1

'todosListForUpdate [indexForUpdate]'がクローンされていない限り。 – zerkms

関連する問題