制御されていないコンポーネントフォームデータは DOM 自体によって処理されます。つまり、setState() によって制御されず、従来の HTML フォーム入力に似ています。入力値は最新の値を示します (ref を使用して DOM からフォーム値を取得します) 1. 制御されていないコンポーネント <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>タイトル</title> </head> <本文> <!--コンテナを準備する--> <div id="test"></div> <!--React Core ライブラリの紹介--> <script src="../js/react.development.js"></script> <!-- react 操作 dom をサポートするために react-dom を導入します --> <script src="../js/react-dom.development.js"></script> <!--jsx を js に変換するには babel を導入します--> <script src="../js/babel.min.js"></script> <!--コンポーネント タグのプロパティを制限するために prop-types を導入します--> <script src="../js/prop-types.js"></script> <script type="text/babel"> クラスLoginはReact.Componentを拡張します。 React のインスタンスを作成します。 React のインスタンスを作成します。 handleSubmit = (イベント) => { event.preventDefault() // フォームの送信を禁止する const username = this.myRef1.current const パスワード = this.myRef2.current alert(`入力したユーザー名は: ${username.value}、入力したパスワードは: ${password.value}`) } 与える() { 戻る ( <フォームonSubmit={this.handleSubmit}> ユーザー名: <input ref={this.myRef1} type="text"/> パスワード: <input ref={this.myRef2} type="text"/> <button>ログイン</button> </フォーム> ) } } ReactDOM.render(<Login/>,document.getElementById('test')) </スクリプト> </本文> </html> 制御コンポーネントHTML では、通常、<input>、<textarea>、<select> タグの値はユーザー入力に基づいて更新されます。 React では、変更可能な状態は通常、コンポーネントの状態プロパティに保存され、 setState() を使用してのみ更新できます。フォームをレンダリングする React コンポーネントは、その後のユーザー入力時にそのフォームに何が起こるかを制御します。このように、React によって制御される入力フォーム要素は値を変更します。これは「制御されたコンポーネント」と呼ばれます。 2. 制御対象コンポーネント(制御対象) <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>タイトル</title> </head> <本文> <!--コンテナを準備する--> <div id="test"></div> <!--React Core ライブラリの紹介--> <script src="../js/react.development.js"></script> <!-- react 操作 dom をサポートするために react-dom を導入します --> <script src="../js/react-dom.development.js"></script> <!--jsx を js に変換するには babel を導入します--> <script src="../js/babel.min.js"></script> <!--コンポーネント タグのプロパティを制限するために prop-types を導入します--> <script src="../js/prop-types.js"></script> <script type="text/babel"> クラスLoginはReact.Componentを拡張します。 // 状態を初期化する state = { ユーザー名: ''、 パスワード: '' } // ユーザー名を状態に保存する saveUsername = (e) => { this.setState({ユーザー名: e.target.value}) } // パスワードを状態に保存する savePassword = (e) => { this.setState({パスワード: e.target.value}) } ハンドル送信 = (e) => { e.preventDefault() // フォームの送信を禁止する const {username,password} = this.state alert(`入力したユーザー名は: ${username}、入力したパスワードは: ${password}`) } 与える() { // onChange の変更 return ( <フォームonSubmit={this.handleSubmit}> ユーザー名: <input onChange={this.saveUsername} type="text"/> パスワード: <input onChange={this.savePassword} type="text"/> <button>ログイン</button> </フォーム> ) } } ReactDOM.render(<Login/>,document.getElementById('test')) </スクリプト> </本文> </html> 知らせ一般的に、ref は非制御コンポーネントで複数回使用されるため、制御コンポーネントの方が頻繁に使用されます。公式ドキュメントには「ref を過度に使用しないでください」と記載されています。ref を過度に使用すると、効率の問題が発生します。 結論は制御される要素と制御されない要素にはそれぞれ利点があり、選択は具体的な状況によって異なります。フォームが UI フィードバックの点で非常に単純な場合は、ref を制御する、つまり制御されていないコンポーネントを使用することはまったく問題ありません。
上記は、React における制御コンポーネントと非制御コンポーネントの詳細についての簡単な分析です。React における制御コンポーネントと非制御コンポーネントの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: MySQL 増分バックアップとブレークポイントリカバリスクリプトの例
導入悠宇希の原文です。 vite は Vue CLI に似ています。vite も、基本的なプロジェク...
——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...
Navicat で MySql スケジュールタスクを作成する詳細な説明イベントは、MySQL が特定...
最近、ウェブサイトを更新すると、503 Service Temporarily Unavailabl...
需要背景最近、Vue を使用してフロントエンド エンジニアリング システムと組み合わせ、以前のデモを...
序文私のチームが税制モジュールを開発していたとき、計算問題、特にグリッド内の計算を解決するために時間...
01 ウィンターフレーク(個人のみ) 02 スノートップキャップ(業務用) 03 モディウス「フリ...
フォーム検証は、フロントエンド開発プロセスで最もよく使用される機能の 1 つです。私の個人的な仕事経...
競合の主な症状は、FLASH ボタンがジャンプし続け、不安定になり、Web ページの外観と通常のアク...
1 はじめにバイナリ ログは、データを持つ、またはデータを変更する可能性がある SQL ステートメン...
目次1. 問題の説明2. 問題解決1. 仮想マシンシステムのインストール時にネットワークがない場合2...
最近はMySQLのメモをたくさん取っていますが、それは主に会社のOracleが比較的安定していてメン...
目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...
この半月、期末試験の準備にかなりのエネルギーを費やしました。今日はしっかり復習するべきだったのですが...
序文この記事では主に、SQL ステートメントの最適化の一般的な手順について説明します。これは、参考と...