回答編集履歴
13
テキスト修正
test
CHANGED
@@ -2,11 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持させる意図と思われましたが、そうだとすると、`Sample`の`this.state` にも `mode`を重複して持つ必要はないと思われます。
|
5
|
+
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持させる意図と思われましたが、そうだとすると、`Sample`の`this.state` にも `mode`を重複して持つ必要はないと思われます。 `this.state` に `mode` を持たせなくても、`Sample` では
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
`Sample` では
|
10
6
|
|
11
7
|
```javascript
|
12
8
|
|
@@ -14,11 +10,11 @@
|
|
14
10
|
|
15
11
|
```
|
16
12
|
|
17
|
-
によってreduxとconnectされ
|
13
|
+
によってreduxとconnectされることにより、`this.props` に redux の state が入ってきますので、これを使えばよいです。
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
|
15
|
+
|
16
|
+
|
21
|
-
下記にいくつかの`Sample`の修正版を挙げます。これらは、リデューサーが`pageReducer` しかなく、Reduxのstoreが以下
|
17
|
+
この考え方にそって、下記にいくつかの`Sample`の修正版を挙げます。これらは、リデューサーが`pageReducer` しかなく、Reduxのstoreが以下
|
22
18
|
|
23
19
|
|
24
20
|
|
12
テキスト修正
test
CHANGED
@@ -166,9 +166,7 @@
|
|
166
166
|
|
167
167
|
でも良いかと思います。
|
168
168
|
|
169
|
-
|
170
|
-
|
171
|
-
|
169
|
+
下記に動作確認用のサンプルを作りました。
|
172
170
|
|
173
171
|
|
174
172
|
|
@@ -176,7 +174,7 @@
|
|
176
174
|
|
177
175
|
|
178
176
|
|
179
|
-
は、ご質問に挙げられているコードを転記して各ファイルを作成し
|
177
|
+
これは、ご質問に挙げられているコードを転記して各ファイルを作成し、`Sample` については上記の各修正版を追加して、index.js と comfirmForm.jsは当方で適当に作成して補ったものです。
|
180
178
|
|
181
179
|
|
182
180
|
|
11
テキスト修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持させる意図
|
5
|
+
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持させる意図と思われましたが、そうだとすると、`Sample`の`this.state` にも `mode`を重複して持つ必要はないと思われます。
|
6
6
|
|
7
7
|
|
8
8
|
|
10
テキスト修正
test
CHANGED
@@ -200,7 +200,7 @@
|
|
200
200
|
|
201
201
|
|
202
202
|
|
203
|
-
- `mode` は Redux state にあるのだから、`Sample` の this.state に重複して持つ必要は無いのでは?
|
203
|
+
- `mode` は Redux の state にあるのだから、`Sample` の this.state に重複して持つ必要は無いのでは?
|
204
204
|
|
205
205
|
|
206
206
|
|
9
テキスト修正
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
-
### sample.js
|
35
|
+
### sample.js (Sampleクラス修正版その1)
|
36
36
|
|
37
37
|
|
38
38
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
### sample2.js
|
89
|
+
### sample2.js (Sampleクラス修正版その2)
|
90
90
|
|
91
91
|
```jsx
|
92
92
|
|
@@ -132,7 +132,7 @@
|
|
132
132
|
|
133
133
|
|
134
134
|
|
135
|
-
### sample3.js
|
135
|
+
### sample3.js (Sampleクラス修正版その3)
|
136
136
|
|
137
137
|
```jsx
|
138
138
|
|
@@ -196,11 +196,11 @@
|
|
196
196
|
|
197
197
|
|
198
198
|
|
199
|
-
具体的なコードの修正方法はさておき、この回答の主旨は
|
199
|
+
具体的なコードの修正方法はさておき、この回答の主旨は、初めに書いたとおり
|
200
|
-
|
201
|
-
|
202
|
-
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
-
- `mode` は Redux state にあるのだから、`Sample` の this.state に
|
203
|
+
- `mode` は Redux state にあるのだから、`Sample` の this.state に重複して持つ必要は無いのでは?
|
204
204
|
|
205
205
|
|
206
206
|
|
8
テキスト修正
test
CHANGED
@@ -180,11 +180,11 @@
|
|
180
180
|
|
181
181
|
|
182
182
|
|
183
|
-
|
183
|
+
|
184
|
-
|
185
|
-
|
186
|
-
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
-
上記
|
187
|
+
なお上記に挙げたコードは、冒頭に書いたとおり、リデューサーが `pageReducer` しかなく、
|
188
188
|
|
189
189
|
```javascript
|
190
190
|
|
7
テキスト修正
test
CHANGED
@@ -14,9 +14,21 @@
|
|
14
14
|
|
15
15
|
```
|
16
16
|
|
17
|
-
によってreduxとconnectされていることにより、`this.props` に redux の state が入ってきますので、これを使
|
17
|
+
によってreduxとconnectされていることにより、`this.props` に redux の state が入ってきますので、これを使えばよいかと思います。
|
18
|
+
|
19
|
+
|
20
|
+
|
18
|
-
|
21
|
+
下記にいくつかの`Sample`の修正版を挙げます。これらは、リデューサーが`pageReducer` しかなく、Reduxのstoreが以下
|
22
|
+
|
23
|
+
|
24
|
+
|
19
|
-
|
25
|
+
```javascript
|
26
|
+
|
27
|
+
const store = createStore(pageReducer);
|
28
|
+
|
29
|
+
```
|
30
|
+
|
31
|
+
によって作られていることを前提にしています。
|
20
32
|
|
21
33
|
|
22
34
|
|
@@ -172,11 +184,7 @@
|
|
172
184
|
|
173
185
|
|
174
186
|
|
175
|
-
### 補足
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
上記の回答では、
|
187
|
+
上記の回答では、冒頭に書いたとおり、リデューサーが `pageReducer` しかなく、
|
180
188
|
|
181
189
|
```javascript
|
182
190
|
|
@@ -184,7 +192,7 @@
|
|
184
192
|
|
185
193
|
```
|
186
194
|
|
187
|
-
|
195
|
+
によって `store`を作っている想定のものですが、tajihiroさんの実際のコードでは、いくつかのリデューサーを`combineReducers`していると思います。その場合は、 各コンポーネントに入ってくる redux state から mode を取り出すために、もうひとつプロパティが必要になると思われます。そこは適宜、ご自身のコードに合わせて頂ければと思います。
|
188
196
|
|
189
197
|
|
190
198
|
|
6
テキスト修正
test
CHANGED
@@ -169,3 +169,31 @@
|
|
169
169
|
|
170
170
|
|
171
171
|
以上、参考になれば幸いです。
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
### 補足
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
上記の回答では、codesandboxのサンプルにある index.js のとおり、リデューサーが `pageReducer` しかなく、
|
180
|
+
|
181
|
+
```javascript
|
182
|
+
|
183
|
+
const store = createStore(pageReducer);
|
184
|
+
|
185
|
+
```
|
186
|
+
|
187
|
+
という形で `store`を作っていますが、tajihiroさんの実際のコードでは、いくつかのリデューサーを`combineReducers`していると思います。その場合は、 各コンポーネントに入ってくる redux state から mode を取り出すために、もうひとつプロパティが必要になると思われます。そこは適宜、ご自身のコードに合わせて頂ければと思います。
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
具体的なコードの修正方法はさておき、この回答の主旨は
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
- `mode` は Redux state にあるのだから、`Sample` の this.state にも持つ必要は無いのでは?
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
ということになります
|
5
テキスト修正
test
CHANGED
@@ -156,7 +156,15 @@
|
|
156
156
|
|
157
157
|
|
158
158
|
|
159
|
+
以下のサンプル
|
160
|
+
|
161
|
+
|
162
|
+
|
159
|
-
- **動作確認用
|
163
|
+
- **動作確認用サンプル: **[https://codesandbox.io/s/q227869-3q91g](https://codesandbox.io/s/q227869-3q91g)
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
は、ご質問に挙げられているコードを転記して各ファイルを作成して、`Sample` については上記の各修正版を追加し、足りないものは当方で補ったものです。
|
160
168
|
|
161
169
|
|
162
170
|
|
4
テキスト修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持し
|
5
|
+
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持させる意図だと思われましたが、そうだとすると、`Sample`の`this.state` にも `mode`を持つ必要はないと思われます。
|
6
6
|
|
7
7
|
|
8
8
|
|
3
テキスト修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持しているので、`Sample` の `this.state` の中にさらに `mode`を持つ必要はないと思われます。
|
5
|
+
フォームが入力の受付中であるか、または確認の表示中であるかという2状態を、redux state の `mode` というプロパティで保持しているので、`Sample` の `this.state` の中にさらに重複して `mode`を持つ必要はないと思われます。
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
```
|
16
16
|
|
17
|
-
によってreduxとconnectされている
|
17
|
+
によってreduxとconnectされていることにより、`this.props` に redux の state が入ってきますので、これを使って、以下でよいかと思います。
|
18
18
|
|
19
19
|
|
20
20
|
|
2
テキスト修正
test
CHANGED
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
```
|
118
118
|
|
119
|
-
ま
|
119
|
+
さらに短いコードで済ませるとすれば、
|
120
120
|
|
121
121
|
|
122
122
|
|
@@ -134,13 +134,11 @@
|
|
134
134
|
|
135
135
|
|
136
136
|
|
137
|
-
const Sample = ({ mode }) =>
|
137
|
+
const Sample = ({ mode }) => (
|
138
138
|
|
139
|
-
|
139
|
+
mode === 'input' ? <InputForm /> : <ConfirmForm />
|
140
140
|
|
141
|
-
return <Form />;
|
142
|
-
|
143
|
-
|
141
|
+
)
|
144
142
|
|
145
143
|
|
146
144
|
|
1
テキスト修正
test
CHANGED
@@ -116,6 +116,44 @@
|
|
116
116
|
|
117
117
|
```
|
118
118
|
|
119
|
+
または
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
### sample3.js
|
124
|
+
|
125
|
+
```jsx
|
126
|
+
|
127
|
+
import React from "react";
|
128
|
+
|
129
|
+
import { connect } from "react-redux";
|
130
|
+
|
131
|
+
import InputForm from "./inputForm";
|
132
|
+
|
133
|
+
import ConfirmForm from "./comfirmForm";
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
const Sample = ({ mode }) => {
|
138
|
+
|
139
|
+
const Form = mode === 'input' ? InputForm : ConfirmForm;
|
140
|
+
|
141
|
+
return <Form />;
|
142
|
+
|
143
|
+
}
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
export default connect((state)=>state)(Sample);
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
```
|
154
|
+
|
155
|
+
|
156
|
+
|
119
157
|
でも良いかと思います。
|
120
158
|
|
121
159
|
|