より再利用可能なコンポーネント:が反応私は、次の小道具があるオートコンプリートコンポーネント持っ
value
(表示テキスト)を、onChange
は、(すべてのキーストロークに解雇)
onSelect
(ユーザーが
の提案のリストから何かを選択し、選択したオブジェクトを渡し+選択したオブジェクトのテキストを表示すると起動されます -value
と同じ)
状態: - suggestionsList
(私はそれがコンポーネントの内部の何かであると判断しました)。
ビューの1つで、このコンポーネントの親は、各キーストロークの後にvalue
を気にしません。それはちょうどonSelect
ハンドラによって渡される選択された項目を気にします。したがって、このシナリオではvalue
& onChange
小道具は必要ありません。 value
がオートコンプリートコンポーネントの内部状態になる可能性があります。
しかし、他のビューのいずれかで、親は各キーストロークについても知りたいと思います。これは、親が自分の状態でvalue
を保持し、それを小道具として渡す必要があることを意味します。 onChange
小道具はまた、その状態を変更するために親に通知するために必要である。
オートコンプリートコンポーネントを作成して両方のシナリオを処理するにはどうすればよいですか?どのプロパティが小道具であり、どんな状態であるべきですか?
感謝の意を表します。
親はその状態で値を保持する必要はありません。値を取得できる 'onChange'ハンドラを提供するだけでよいのです。その状態で値を保持する必要があるかもしれませんが、*には*がありません。したがって、コンポーネントが 'onChange'プロパティ(親からの関数)を受け取った場合、コンポーネントはそれ自身の' onChange'と一緒にそれを呼び出す必要があります。 –
@DaveNewtonありがとう。それは有用な提案です。最初のシナリオは、親が「価値」を必要としないという質問から推測します。私はコンポーネントの 'value'を内部状態に変更し、' onSelect' propsハンドラで選択されたアイテムについて親に通知させます。これまではすべてが問題ありません。 2番目のシナリオはどうなりますか(親は各キーストロークの更新を求めています)?親は 'onChange'を渡して、それ自身の状態で値を保存するべきです(' value'状態は、親と子の両方で複製されます)?私の目標は、両方のシナリオを処理する単一コンポーネントを作成することです。 – mbudnik
はい、前述のように、親が 'onChange'ハンドラをコンポーネントに渡す場合、コンポーネントは内部の' onChange'処理の一部としてそれを呼び出す必要があります。 –