回答編集履歴

6

テキスト修正

2018/10/20 02:27

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -144,4 +144,4 @@
144
144
 
145
145
 
146
146
 
147
- なお、追記ふくめて上記の回答では、Rails側で、あるProductにReviewが1件もついていなくても、`GET /api/v1/products/:id` のレスポンスJSONにはreviewsプロパティは存在して、空の配列として返してくれることを前提にしています。
147
+ なお、追記ふくめて上記の回答では、Rails側のモデルの)あるProductにReviewが1件もついていなくても、`GET /api/v1/products/:id` のレスポンスJSONにはreviewsプロパティは存在して、空の配列として返してくれることを前提にしています。

5

テキスト修正

2018/10/20 02:27

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
  **ProductPage:**
114
114
 
115
- ```javascript
115
+ ```JSX
116
116
 
117
117
  const ProductPage = ({ product }) => (
118
118
 

4

テキスト修正

2018/10/20 02:15

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- `ProductPageContainer` の `constructor` で `this.state` の初期化をしているところで、 `this.state.product`を空配列`[]` で初期化しているところを、以下のように修正してみるといかがでしょうか?
5
+ `ProductPageContainer` の `constructor` で `this.state` の初期化をしているところで、 `this.state.product`初期を、以下のように修正してみるといかがでしょうか?
6
6
 
7
7
 
8
8
 
@@ -78,7 +78,7 @@
78
78
 
79
79
 
80
80
 
81
- 上記に書いた方法の他には、以下のように `this.state.product` を null で初期化しておいて、`ProductPage` のほうでprops で渡される`product` の null チェックを追加するという手もあるかと思います。
81
+ 上記に書いた方法の他には、以下のように `this.state.product` を `null` で初期化しておいて、`ProductPage` のほうで propsで渡される`product` の null チェックを追加するという手もあるかと思います。
82
82
 
83
83
 
84
84
 
@@ -88,7 +88,7 @@
88
88
 
89
89
 
90
90
 
91
- ProductPageContainer:
91
+ **ProductPageContainer:**
92
92
 
93
93
  ```javascript
94
94
 
@@ -110,7 +110,7 @@
110
110
 
111
111
 
112
112
 
113
- ProductPage:
113
+ **ProductPage:**
114
114
 
115
115
  ```javascript
116
116
 

3

テキスト修正

2018/10/20 02:00

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -144,4 +144,4 @@
144
144
 
145
145
 
146
146
 
147
- なお、追記ふくめて上記の回答では、Rails側で、あるProductにReviewが1件もついていなくても、`GET /api/v1/products/:id` のレスポンスにはreviewsプロパティは存在して、空の配列として返してくれることを前提にしています。
147
+ なお、追記ふくめて上記の回答では、Rails側で、あるProductにReviewが1件もついていなくても、`GET /api/v1/products/:id` のレスポンスJSONにはreviewsプロパティは存在して、空の配列として返してくれることを前提にしています。

2

テキスト修正

2018/10/20 01:54

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  product: {
50
50
 
51
- id: -1,
51
+ id: 0,
52
52
 
53
53
  name: null,
54
54
 
@@ -64,7 +64,7 @@
64
64
 
65
65
 
66
66
 
67
- なお上記では、 APIから返される有効なproductのidは0以上であることを前提として、-1 を無効なidの値として初期値に使用しています。他に、 id の初期値としては 0 、あるいは場合によっては `NaN` も考えられます。
67
+ なお上記では、 APIから返される有効なproductのidは1以上であることを前提として、0を無効なidの値として初期値に使用しています。
68
68
 
69
69
 
70
70
 

1

テキスト修正

2018/10/20 01:52

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -71,3 +71,77 @@
71
71
 
72
72
 
73
73
  以上、参考になれば幸いです。
74
+
75
+
76
+
77
+ ## 追記
78
+
79
+
80
+
81
+ 上記に書いた方法の他には、以下のように `this.state.product` を null で初期化しておいて、`ProductPage` のほうでprops で渡される`product` の null チェックを追加するという手もあるかと思います。
82
+
83
+
84
+
85
+
86
+
87
+ #### 修正後
88
+
89
+
90
+
91
+ ProductPageContainer:
92
+
93
+ ```javascript
94
+
95
+ class ProductPageContainer extends Component {
96
+
97
+ constructor(props){
98
+
99
+ super(props)
100
+
101
+ this.state = {
102
+
103
+ product: null
104
+
105
+ }
106
+
107
+ }
108
+
109
+ ```
110
+
111
+
112
+
113
+ ProductPage:
114
+
115
+ ```javascript
116
+
117
+ const ProductPage = ({ product }) => (
118
+
119
+ product && (
120
+
121
+ <div>
122
+
123
+ {product.name}
124
+
125
+ {product.reviews.map( review =>
126
+
127
+ <ProductReview
128
+
129
+ review={review}
130
+
131
+ key={review.id}
132
+
133
+ />)
134
+
135
+ }
136
+
137
+ </div>
138
+
139
+ )
140
+
141
+ );
142
+
143
+ ```
144
+
145
+
146
+
147
+ なお、追記ふくめて上記の回答では、Rails側で、あるProductにReviewが1件もついていなくても、`GET /api/v1/products/:id` のレスポンスにはreviewsプロパティは存在して、空の配列として返してくれることを前提にしています。