teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

テキスト修正

2019/08/14 16:05

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -13,8 +13,16 @@
13
13
  toDoList: Todo.push(input),
14
14
  });
15
15
  ```
16
- によって、 this.state.toDoList には、1つ要素の追加された配列の長さが入るので、 3 という数値が設定されます。そのため次に「追加」ボタンをクリックしたときは、
16
+ によって、 this.state.toDoList には、1つ要素の追加された配列の長さが入るので、 3 という数値が設定されます。
17
+ そのため、 render の以下の部分
18
+
17
19
  ```javascript
20
+ if (this.state.toDoList.length > 1) {
21
+ ```
22
+ で、 `this.state.toDoList.length` は undefined になり、 if が判定する条件は false になって、 `<ul>` の中身が作られないために、画面上では、既存のリストアイテムも消えてしまいます。
23
+
24
+ さらに続けて「追加」ボタンをクリックしたときは、
25
+ ```javascript
18
26
  const Todo = this.state.toDoList;
19
27
  ```
20
28
  によって `const Todo` には 3 という数値が入ってきて、

3

テキスト修正

2019/08/14 16:05

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -64,6 +64,6 @@
64
64
  }
65
65
  ```
66
66
 
67
- 上記のように、 this.setState するときに、既存の state の何らかのプロパティの配列に追加したり、あるいはstateのあるプロパティはオブジェクトで、それのあるプロパティだけを変えたりするときに、スプレッド演算子 `...` はよく使われます。
67
+ 上記のように、 this.setState するときに、既存の state の何らかのプロパティの配列に追加したり、あるいはstateのあるプロパティはオブジェクトで、それのあるプロパティだけを変えたりするときに、スプレッド構文 `...` はよく使われます。
68
68
 
69
69
  以上参考になれば幸いです。

2

テキスト修正

2019/08/14 15:51

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -27,10 +27,14 @@
27
27
  ```
28
28
  というエラーになります。
29
29
  修正の方法ですが、新しい this.state.toDoList を setState する箇所の
30
+
31
+ **修正前:**
30
32
  ```javascript
31
33
  toDoList: Todo.push(input),
32
34
  ```
33
35
  を、たとえば以下のように修正します。
36
+
37
+ **修正後:**
34
38
  ```javascript
35
39
  toDoList: [...Todo, input],
36
40
  ```

1

テキスト修正

2019/08/14 15:51

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  ```javascript
18
18
  const Todo = this.state.toDoList;
19
19
  ```
20
- によって `const Todo` には 3 という数が入ってきて、
20
+ によって `const Todo` には 3 という数が入ってきて、
21
21
  ```javascript
22
22
  Todo.push(input)
23
23
  ```