回答編集履歴
1
修正
answer
CHANGED
@@ -9,6 +9,8 @@
|
|
9
9
|
00 で`setState`が実行されるとき、それはすぐに`this.state`に反映されません。
|
10
10
|
なので01で`update(this.state.schedule, ...)`とするとき、この`schedule`ではまだ00が`false`なのです。
|
11
11
|
|
12
|
+
結果、`key`=00 では 00 true 01 false が`setState`され、`key`=01 では 00 false 01 true が`setState`されるので、後者が上書きして 00 false 01 true となったわけです。
|
13
|
+
|
12
14
|
解決策としては、①`setState`をまとめて1回実行するか、②`setState`には「古い`state`を受け取って新しい`state`を返す」関数を渡せますので、それを利用することです。
|
13
15
|
|
14
16
|
①`setState`をまとめて1回実行する
|