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

回答編集履歴

2

ソース修正

2021/09/22 06:45

投稿

退会済みユーザー
answer CHANGED
@@ -26,4 +26,34 @@
26
26
  <button onClick={() => handleDelete(index)}>削除</button>
27
27
  </td>
28
28
  </tr>
29
+ ```
30
+
31
+ または、idを使ってstatusをトグルする要素を指定してもええ。修正箇所は、上に同じ2箇所や。
32
+
33
+ ```diff
34
+
35
+ setTodos(newTodos.map((e, i) => ({ ...e, id: i + 1 })));
36
+ };
37
+ - const toggle = () => {
38
+ - setComment((prevState) => !prevState);
39
+ + const toggle = (todoId) => {
40
+ + setTodos(todos.map((todo, i) =>
41
+ + todoId === todo.id ? {
42
+ + ...todo,
43
+ + status: todo.status === 'incomplete' ? 'completed' : 'incomplete', // completed は「完了」を表す
44
+ + } : todo));
45
+ };
46
+
47
+ return (
48
+ ```
49
+
50
+ ```diff
51
+ <td>{todo.id}</td>
52
+ <td>{todo.comment}</td>
53
+ <td>
54
+ - <button onClick={toggle}>{comment ? "作業中" : "完了"}</button>
55
+ + <button onClick={() => toggle(todo.id)}>{todo.status === 'incomplete' ? "作業中" : "完了"}</button>
56
+ <button onClick={() => handleDelete(index)}>削除</button>
57
+ </td>
58
+ </tr>
29
59
  ```

1

ソース修正

2021/09/22 06:45

投稿

退会済みユーザー
answer CHANGED
@@ -1,6 +1,9 @@
1
1
  修正するとこ、2箇所あってん。こないにしてみたって。
2
2
 
3
3
  ```diff
4
+
5
+ setTodos(newTodos.map((e, i) => ({ ...e, id: i + 1 })));
6
+ };
4
7
  - const toggle = () => {
5
8
  - setComment((prevState) => !prevState);
6
9
  + const toggle = (index) => {
@@ -9,9 +12,18 @@
9
12
  + ...todo,
10
13
  + status: todo.status === 'incomplete' ? 'completed' : 'incomplete', // completed は「完了」を表す
11
14
  + } : todo));
15
+ };
16
+
17
+ return (
12
18
  ```
13
19
 
14
20
  ```diff
21
+ <td>{todo.id}</td>
22
+ <td>{todo.comment}</td>
23
+ <td>
15
24
  - <button onClick={toggle}>{comment ? "作業中" : "完了"}</button>
16
25
  + <button onClick={() => toggle(index)}>{todo.status === 'incomplete' ? "作業中" : "完了"}</button>
26
+ <button onClick={() => handleDelete(index)}>削除</button>
27
+ </td>
28
+ </tr>
17
29
  ```