Reactの非制御コンポーネント

反応する高度なチュートリアル。パート4







公式のReact.jsライブラリドキュメントのAdvanced Guidesセクションの一連の翻訳の継続。







Reactの非制御コンポーネント



ほとんどの場合、 制御されたコンポーネントを使用してフォームを実装することをお勧めします。 制御されたコンポーネントでは、フォームデータはReactコンポーネントによって処理されます。 代替手段があります-これらは、フォームデータがDOM自体によって処理される非制御コンポーネントです。

制御されていないコンポーネントを記述する場合、状態の更新ごとにイベントハンドラを記述する代わりに、 ref使用してDOMからフォーム値を取得できます。







たとえば、次のコードは、制御されていないコンポーネントのフォームからName値を取得します。







class NameForm extends React.Component { constructor(props) { super(props); this.handleSubmit = this.handleSubmit.bind(this); } handleSubmit(event) { alert('A name was submitted: ' + this.input.value); event.preventDefault(); } render() { return ( <form onSubmit={this.handleSubmit}> <label> Name: <input type="text" ref={(input) => this.input = input} /> </label> <input type="submit" value="Submit" /> </form> ); } }
      
      





実際のデータは制御されていないコンポーネントのDOMに格納されているため、そのようなコンポーネントを使用すると、Reactコードと非Reactコードの統合(接続)が容易になる場合があります。 コードの純度を犠牲にして、より少ない量のコード(およびその結果として記述する速度)に興味がある場合-これはオプションです。 そうでない場合は、制御されたコンポーネントを使用することをお勧めします。







デフォルト値



React表示(レンダリング)ライフサイクルでは、フォーム要素のvalue



属性がDOMの値をオーバーライドします。 非制御コンポーネントでは、多くの場合、初期値を設定する必要がありますが、その後の更新は制御できません。 この場合、 value



代わりにdefaultValue



属性を設定できvalue









 render() { return ( <form onSubmit={this.handleSubmit}> <label> Name: <input defaultValue="Bob" type="text" ref={(input) => this.input = input} /> </label> <input type="submit" value="Submit" /> </form> ); }
      
      





さらに、 <input type="checkbox">



および<input type="radio">



defaultChecked



属性をサポートし、 <select>



defaultValue



サポートし<select>









次の部分:









前のパーツ:









出典: React-高度なガイド-非制御コンポーネント








All Articles