回答編集履歴

2

spliceの使い方間違ってました

2021/06/27 10:14

投稿

ka2obushi
ka2obushi

スコア173

test CHANGED
@@ -68,25 +68,25 @@
68
68
 
69
69
  delete(idx) {
70
70
 
71
- const todoList = this.state.todoList;
71
+ const todoList = [...this.state.todoList];
72
72
 
73
- this.setState({
73
+ todoList.splice(idx, 1);
74
74
 
75
- todoList: [...todoList].splice(idx, 1),
75
+ this.setState({ todoList });
76
-
77
- });
78
76
 
79
77
  }
80
78
 
81
79
  complete(idx) {
82
80
 
83
- const todoList = this.state.todoList;
81
+ const todoList = [...this.state.todoList];
82
+
83
+ const [completeTodo] = todoList.splice(idx, 1);
84
84
 
85
85
  this.setState({
86
86
 
87
- todoList: [...todoList].splice(idx, 1),
87
+ todoList,
88
88
 
89
- completeList: [...this.state.completeList, todoList[idx]],
89
+ completeList: [...this.state.completeList, completeTodo],
90
90
 
91
91
  });
92
92
 

1

スプレッド構文の結果間違ってたのと言い回しの修正

2021/06/27 10:14

投稿

ka2obushi
ka2obushi

スコア173

test CHANGED
@@ -1,4 +1,4 @@
1
- この原因と直接関係あるかはわかりませんが、reactではprops/stateは基本的にイミュータブルである必要があり、これを守らないとundo機能を実装しようとした時に困ったりバグが発生する確率が上がります。
1
+ この原因と直接関係あるかはわかりませんが、reactではprops/stateは基本的にイミュータブルである必要があり、これを守らないとバグが発生する確率が上がったりundo機能を実装しようとした時に困ったります。
2
2
 
3
3
 
4
4
 
@@ -30,13 +30,13 @@
30
30
 
31
31
  const arr3 = [...arr1];
32
32
 
33
- arr1.push(2);
33
+ arr1.push(4);
34
34
 
35
- console.log(arr1); // [1, 2]
35
+ console.log(arr1); // [1, 2, 3, 4]
36
36
 
37
- console.log(arr2); // [1, 2]
37
+ console.log(arr2); // [1, 2, 3, 4]
38
38
 
39
- console.log(arr3); // [1]
39
+ console.log(arr3); // [1, 2, 3]
40
40
 
41
41
  ```
42
42