回答:
これはステートフルDOMコンポーネント(フォーム要素)に関連し、Reactドキュメントは違いを説明します:
props
ようにコールバックして変更と通知onChange
。親コンポーネントは、コールバックを処理して自身の状態を管理し、新しい値をプロップとして制御されたコンポーネントに渡すことによって、それを「制御」します。これを「ダムコンポーネント」と呼ぶこともできます。ref
あなたがそれを必要とするとき、現在の値を見つけること。これは、従来のHTMLに少し似ています。ほとんどのネイティブReactフォームコンポーネントは、制御された使用と制御されていない使用の両方をサポートします。
// Controlled:
<input type="text" value={value} onChange={handleChange} />
// Uncontrolled:
<input type="text" defaultValue="foo" ref={inputRef} />
// Use `inputRef.current.value` to read the current value of <input>
ほとんど(またはすべて)の場合、制御されたコンポーネントを使用する必要があります。
state
いうよりも値をとっていませんprops
か?
props
。制御されていないコンポーネントはstate
、値自体を内部的に制御するために使用します。これが大きな違いです。
controlled components
(<input type="text" value="value" onChange={handleChangeCallbackFn} />
入力要素は、独自の値を処理し、経由して読み取ることができ、従来のHTML対)refs
と呼ばれますuncontrolled components
(<value type="text" />
)。制御されたコンポーネントはsetState
、親コンポーネントからプロップとして、または親コンポーネントから取得して、独自の状態を管理しています。
defaultValue
プロップを介してそれを取得するコンポーネントをどのように呼び出しますが、コントローラーに通知しますonBlur
か?