回答編集履歴

3

テキスト修正

2018/09/24 14:15

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -132,6 +132,8 @@
132
132
 
133
133
  **親コンポーネント:**
134
134
 
135
+
136
+
135
137
  ```javascript
136
138
 
137
139
  onDialogClosed() {
@@ -142,6 +144,28 @@
142
144
 
143
145
  ```
144
146
 
147
+ ```javascript
148
+
149
+ this.onDialogClosed = this.onDialogClosed.bind(this);
150
+
151
+ ```
152
+
153
+
154
+
155
+ または、 [class-properties](https://babeljs.io/docs/en/babel-plugin-transform-class-properties) の書き方が出来るbabel設定のようですので、以下です。
156
+
157
+
158
+
159
+ ```javascript
160
+
161
+ onDialogClosed = () => {
162
+
163
+ this.setState({DialogIsOpen: false});
164
+
165
+ }
166
+
167
+ ```
168
+
145
169
 
146
170
 
147
171
  以上です。

2

テキスト修正

2018/09/24 14:15

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -49,3 +49,99 @@
49
49
 
50
50
 
51
51
  上記の回答は勘違いによる誤った回答でしたので、すみませんが、無視してください。
52
+
53
+
54
+
55
+ ---
56
+
57
+ **追記2**
58
+
59
+
60
+
61
+ 以下でうまくいくのではないか? と思ってます。
62
+
63
+
64
+
65
+ `<Dialog />` のほうでは、`this.state` を持たないようにします。(したがって、 Functional Componentにしてもよいと思います。) さらに、 `<StyledCloseImg />` の `onClick`ハンドラも propsから渡します。仮に`onClosed`という名前のpropsで渡すとすると以下のようになるでしょう。
66
+
67
+
68
+
69
+
70
+
71
+ ```JSX
72
+
73
+
74
+
75
+ class Dialog extends Component {
76
+
77
+ render() {
78
+
79
+ return (
80
+
81
+ <StyledDialog open={this.props.isOpen}>
82
+
83
+ <StyledDialogTitle>
84
+
85
+ <StyledCloseImg
86
+
87
+ src={Icons.CloseIcon()}
88
+
89
+ onClick={this.props.onClosed} />
90
+
91
+ </StyledDialogTitle>
92
+
93
+ </StyledDialog>
94
+
95
+ );
96
+
97
+ }
98
+
99
+ }
100
+
101
+
102
+
103
+ ```
104
+
105
+
106
+
107
+ 次に、親コンポーネントのほうで、 (この名前がいいかはさておき、) `onDialogClosed()` というメソッドを用意しておき、これを、 `<Dialog />` のprops `onClosed` に渡します。
108
+
109
+
110
+
111
+ ```JSX
112
+
113
+
114
+
115
+ <Dialog
116
+
117
+ isOpen={this.state.DialogIsOpen}
118
+
119
+ onClosed={this.onDialogClosed}
120
+
121
+ />
122
+
123
+
124
+
125
+ ```
126
+
127
+
128
+
129
+ 上記の `onDialogClosed()` の中では、以下のように `this.state.DialogIsOpen` を false にするように、 setState します。
130
+
131
+
132
+
133
+ **親コンポーネント:**
134
+
135
+ ```javascript
136
+
137
+ onDialogClosed() {
138
+
139
+ this.setState({DialogIsOpen: false});
140
+
141
+ }
142
+
143
+ ```
144
+
145
+
146
+
147
+ 以上です。

1

テキスト修正

2018/09/24 14:01

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -1,12 +1,12 @@
1
- こんにちは。
1
+ ~~こんにちは。~~
2
2
 
3
3
 
4
4
 
5
- `constructor()` で、 `this.state` を設定するところを以下のように修正することで、うまくいきませんか?
5
+ ~~ `constructor()` で、 `this.state` を設定するところを以下のように修正することで、うまくいきませんか? ~~
6
6
 
7
7
 
8
8
 
9
- 修正前:
9
+ ~~修正前:~~
10
10
 
11
11
  ```javascript
12
12
 
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- 修正後:
23
+ ~~修正後:~~
24
24
 
25
25
  ```javascript
26
26
 
@@ -34,4 +34,18 @@
34
34
 
35
35
 
36
36
 
37
- 参考になれば幸いです。
37
+ ~~参考になれば幸いです。~~
38
+
39
+
40
+
41
+ ---
42
+
43
+ **追記**
44
+
45
+
46
+
47
+ seiyan0426さんへ
48
+
49
+
50
+
51
+ 上記の回答は勘違いによる誤った回答でしたので、すみませんが、無視してください。