回答編集履歴

9

テキスト追加

2020/04/23 21:54

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
 
106
106
 
107
- action.payload 自体が、value だったりインデクスだったりしてもよいのですが、payloadをオブジェクトにして、その中に値をプロパティとして持つ形もよく使われます。
107
+ アクションオブジェクトの構造について、action.payload 自体が、value だったりインデクスだったりしてもよいのですが、上記の回答のとおり、payloadをオブジェクトにして、その中に値をプロパティとして持つ形もよく使われます。以下のような形です。
108
108
 
109
109
 
110
110
 
@@ -124,4 +124,4 @@
124
124
 
125
125
  ```
126
126
 
127
- 参考: [https://github.com/redux-utilities/flux-standard-action#example](https://github.com/redux-utilities/flux-standard-action#example)
127
+ 引用元: [https://github.com/redux-utilities/flux-standard-action#example](https://github.com/redux-utilities/flux-standard-action#example)

8

テキスト追加

2020/04/23 21:54

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -112,11 +112,11 @@
112
112
 
113
113
  {
114
114
 
115
- type: "ADD_TODO",
115
+ type: 'ADD_TODO',
116
116
 
117
117
  payload: {
118
118
 
119
- value: "何かの仕事"
119
+ text: 'Do something.'
120
120
 
121
121
  }
122
122
 

7

テキスト追加

2020/04/23 14:06

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -97,3 +97,31 @@
97
97
  flag: action.payload.id !== todo.id && todo.flag
98
98
 
99
99
  ```
100
+
101
+
102
+
103
+ ### 追記2
104
+
105
+
106
+
107
+ action.payload 自体が、value だったりインデクスだったりしてもよいのですが、payloadをオブジェクトにして、その中に値をプロパティとして持つ形もよく使われます。
108
+
109
+
110
+
111
+ ```javascript
112
+
113
+ {
114
+
115
+ type: "ADD_TODO",
116
+
117
+ payload: {
118
+
119
+ value: "何かの仕事"
120
+
121
+ }
122
+
123
+ }
124
+
125
+ ```
126
+
127
+ 参考: [https://github.com/redux-utilities/flux-standard-action#example](https://github.com/redux-utilities/flux-standard-action#example)

6

テキスト追加

2020/04/23 14:04

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -77,3 +77,23 @@
77
77
  },
78
78
 
79
79
  ```
80
+
81
+
82
+
83
+ ### 追記
84
+
85
+
86
+
87
+ ```javascript
88
+
89
+ flag: action.payload.id === todo.id ? false : todo.flag
90
+
91
+ ```
92
+
93
+ は、三項演算子を使わずに、以下のようにも書けて、少し短くできます。
94
+
95
+ ```javascript
96
+
97
+ flag: action.payload.id !== todo.id && todo.flag
98
+
99
+ ```

5

テキスト追加

2020/04/23 13:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 配列のインデクスで特定する場合は、以下でよいかと思います。
5
+ 配列のインデクス(`action.payload.index`とします。)で特定する場合は、以下でよいかと思います。
6
6
 
7
7
 
8
8
 

4

テキスト追加

2020/04/23 13:33

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- todos の要素にユニークなプロパティ `id` を追加するのであれば、以下です。
31
+ todos の要素にユニークなプロパティ `id` を追加して、これによって要素を指定するのであれば、以下です。
32
32
 
33
33
 
34
34
 
@@ -56,7 +56,7 @@
56
56
 
57
57
 
58
58
 
59
- または一行で書くと長くて読みにくければ、 `(state, action) =>` の後を、`return` を書く形にして、以下す。
59
+ 一行で書くと長くなって読みにくくなるので、 `(state, action) =>` の後を、`return` を書く形にすれば、以下のようにも書けます。
60
60
 
61
61
 
62
62
 

3

テキスト追加

2020/04/23 13:29

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,33 @@
2
2
 
3
3
 
4
4
 
5
+ 配列のインデクスで特定する場合は、以下でよいかと思います。
6
+
7
+
8
+
9
+ ```javascript
10
+
11
+ [Actions.completedTodo]: (state, action) => ({
12
+
13
+ ...state,
14
+
15
+ todos: state.todos.map((todo, i) => ({ ...todo, flag: i === action.payload.index ? false : todo.flag }))
16
+
17
+ }),
18
+
19
+ ```
20
+
21
+ 以下は上記のコードを試すためのサンプルです。
22
+
23
+
24
+
25
+ - 動作確認用サンプル: [https://codepen.io/jun68ykt/pen/VwvPdwJ?editors=0012](https://codepen.io/jun68ykt/pen/VwvPdwJ?editors=0012)
26
+
27
+
28
+
29
+
30
+
5
- todos の要素にユニークなプロパティ `id` を追加したとして、以下でよいかと思います。
31
+ todos の要素にユニークなプロパティ `id` を追加するのであれば、以下です。
6
32
 
7
33
 
8
34
 

2

テキスト追加

2020/04/23 13:17

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ...state,
14
14
 
15
- todos: state.todos.map(todo => ({ ...todo, flag: action.id === todo.id ? false : todo.flag }))
15
+ todos: state.todos.map(todo => ({ ...todo, flag: action.payload.id === todo.id ? false : todo.flag }))
16
16
 
17
17
  }),
18
18
 
@@ -42,7 +42,7 @@
42
42
 
43
43
  ...todo,
44
44
 
45
- flag: action.id === todo.id ? false : todo.flag
45
+ flag: action.payload.id === todo.id ? false : todo.flag
46
46
 
47
47
  }));
48
48
 

1

テキスト追加

2020/04/23 13:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- または一行で書くと長くて読みにくければ、 `=>` の後を、`return` を書く形にして、以下です。
33
+ または一行で書くと長くて読みにくければ、 `(state, action) =>` の後を、`return` を書く形にして、以下です。
34
34
 
35
35
 
36
36