回答編集履歴

3

テキスト修正

2019/06/10 10:14

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -140,4 +140,8 @@
140
140
 
141
141
 
142
142
 
143
- 上記の `SimpleBtn` で `onClick` に設定されたイベントハンドラが呼ばれることを確認した後、`<SearchBtn>` でも同様に、 `onClick` を `this.props` から取得して、それを、しかるべきコンポーネント、(詳しくいえば、Wrapper, Flex, BtnIcon のいずれか)に渡すようにすればよいかと思います。注意すべきことは`SeartchInput` から渡された `onClick` が、子コンポーネントに引き継がれていって、最終的には、どこかの HTML要素がクリックされたときのハンドラに設定されることになっているか、という点を点検するとよいかと思います。
143
+ 上記の `SimpleBtn` で `onClick` に設定されたイベントハンドラが呼ばれることを確認した後、`SearchBtn` でも同様に、 `onClick` を `this.props` から取得して、それを、しかるべきコンポーネント、(詳しくいえば、Wrapper, Flex, BtnIcon のいずれか)に渡すようにすればよいかと思います。
144
+
145
+
146
+
147
+ 注意すべきことは`SeartchInput` から渡された `onClick` が、子コンポーネントに引き継がれていって、最終的には、どこかの HTML要素がクリックされたときのハンドラに設定されることになっているか、という点を点検するとよいかと思います。

2

テキスト修正

2019/06/10 10:14

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -78,7 +78,7 @@
78
78
 
79
79
 
80
80
 
81
- 理解の確認のために、これらの props を受け取って反映させる簡単なボタン `SimpleBtn` を作るとすれば、例えば以下のようになるかと思います。(※state不要なコンポーネントなので、Functional Component として書くべきところですが、説明のため、Class component で書きます)
81
+ 理解の確認のために、これらの props を受け取って反映させる簡単なボタン `SimpleBtn` を作るとすれば、例えば以下のようになるかと思います。(※state不要なコンポーネントなので、Functional Component として書くべきところですが、説明のため、Class Component で書きます)
82
82
 
83
83
 
84
84
 
@@ -136,7 +136,7 @@
136
136
 
137
137
 
138
138
 
139
- すれば、`SimpleBtn` がrender されたことによる **[検索]** ボタンをクリックすれば、`SeartchInput` から `onClick` として渡した、 `changeText` が呼ばれると思います。
139
+ すれば、`SimpleBtn` がrender されたことによる **[検索]** ボタンをクリックすれば、`SeartchInput` から `onClick` として渡した、 `changeText` が呼ばれると思います。
140
140
 
141
141
 
142
142
 

1

テキスト修正

2019/06/10 10:13

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -47,3 +47,97 @@
47
47
  }
48
48
 
49
49
  ```
50
+
51
+
52
+
53
+ ### 追記
54
+
55
+
56
+
57
+
58
+
59
+ ご質問に追記いただきました `SearchBtn` を拝読しましたが、`SeartchInput` 側で
60
+
61
+
62
+
63
+ ```jsx
64
+
65
+ <SearchBtn
66
+
67
+ type="submit"
68
+
69
+ onClick={() => this.changeText()}
70
+
71
+ />
72
+
73
+ ```
74
+
75
+
76
+
77
+ として渡している2つの props 、 `type` と `onClick` が、 `SearchBtn` で使われていないようです。渡された `onClick`を使っていなければ、ボタンをクリックしても何も起きないです。
78
+
79
+
80
+
81
+ 理解の確認のために、これらの props を受け取って反映させる簡単なボタン `SimpleBtn` を作るとすれば、例えば以下のようになるかと思います。(※state不要なコンポーネントなので、Functional Component として書くべきところですが、説明のため、Class component で書きます)
82
+
83
+
84
+
85
+ #### SimpleBtn.jsx
86
+
87
+ ```jsx
88
+
89
+ import React from 'react'
90
+
91
+
92
+
93
+ class SimpleBtn extends React.Component {
94
+
95
+ render() {
96
+
97
+ const { type, onClick } = this.props;
98
+
99
+ return (
100
+
101
+ <button type={type} onClick={onClick}>
102
+
103
+ 検索
104
+
105
+ </button>
106
+
107
+ );
108
+
109
+ }
110
+
111
+ }
112
+
113
+
114
+
115
+ export default SimpleBtn;
116
+
117
+ ```
118
+
119
+
120
+
121
+ 上記のような `SimpleBtn` を作って `SeartchInput` の中で `SearchBtn` の替わりに、
122
+
123
+
124
+
125
+ ```jsx
126
+
127
+ <SimpleBtn
128
+
129
+ type="button"
130
+
131
+ onClick={() => this.changeText()}
132
+
133
+ />
134
+
135
+ ```
136
+
137
+
138
+
139
+ すれば、`SimpleBtn` がrender されたことによる **[検索]** ボタンをクリックすれば、`SeartchInput` から `onClick` として渡した、 `changeText` が呼ばれると思います。
140
+
141
+
142
+
143
+ 上記の `SimpleBtn` で `onClick` に設定されたイベントハンドラが呼ばれることを確認した後、`<SearchBtn>` でも同様に、 `onClick` を `this.props` から取得して、それを、しかるべきコンポーネント、(詳しくいえば、Wrapper, Flex, BtnIcon のいずれか)に渡すようにすればよいかと思います。注意すべきことは`SeartchInput` から渡された `onClick` が、子コンポーネントに引き継がれていって、最終的には、どこかの HTML要素がクリックされたときのハンドラに設定されることになっているか、という点を点検するとよいかと思います。