ホームページ > ウェブフロントエンド > フロントエンドQ&A > Reactで制御されたコンポーネントをどのように作成しますか?

Reactで制御されたコンポーネントをどのように作成しますか?

Robert Michael Kim
リリース: 2025-03-19 16:14:31
オリジナル
903 人が閲覧しました

Reactで制御されたコンポーネントをどのように作成しますか?

Reactで制御されたコンポーネントを作成するには、DOMにそれを管理させるのではなく、コンポーネントの状態を介して、フォーム要素の状態(入力フィールド、ドロップダウン、テキスト領域など)を管理することが含まれます。制御されたコンポーネントの作成方法に関する段階的なガイドを次に示します。

  1. 状態の設定:最初に、フォーム要素の値を保持するために、Reactコンポーネントに状態を設定する必要があります。これは、機能コンポーネントのuseStateフックまたはクラスコンポーネントのthis.stateオブジェクトを使用して実行できます。

     <code class="javascript">const [inputValue, setInputValue] = useState('');</code>
    ログイン後にコピー
  2. 状態を値に結合します:次に、状態をフォーム要素のvalue属性にバインドします。入力フィールドの場合、これは次のように見えるかもしれません。

     <code class="jsx"><input type="text" value="{inputValue}" onchange="{handleChange}"></code>
    ログイン後にコピー
  3. 変更の処理:フォーム要素の変更を処理する関数を作成する必要があります。この関数は、ユーザーがフォーム要素と対話するたびに状態を更新します。

     <code class="javascript">const handleChange = (event) => { setInputValue(event.target.value); };</code>
    ログイン後にコピー

これらの手順に従うことにより、Reactがフォームの状態を担当する制御されたコンポーネントを効果的に作成し、フォーム要素の更新はReactの状態管理を通過する必要があります。

Reactで制御されたコンポーネントを使用することの利点は何ですか?

Reactの制御コンポーネントは、開発とユーザーエクスペリエンスを向上させるいくつかの利点を提供します。

  1. 予測可能性と制御:コンポーネントの状態はフォーム要素を管理するため、データに何が起こるか、どのように表示されるかを完全に制御できます。これにより、アプリケーションの動作が予測可能でデバッグしやすくなります。
  2. 単一の真実源:制御されたコンポーネントを使用すると、フォーム要素の状態は、単一の真実の源として機能する1つの場所(コンポーネントの状態)に保存されます。これにより、データ管理が簡素化され、データの矛盾の可能性が低下します。
  3. 再利用性とスケーラビリティ:制御されたコンポーネントにより、アプリケーションのさまざまな部分でフォームロジックを再利用しやすくなります。検証、変換、および提出ロジックを1回記述し、複数のフォームに適用できます。
  4. より簡単なフォーム検証:フォーム要素の状態を管理すると、リアルタイム検証を実装し、ユーザーに即座にフィードバックを提供し、ユーザーエクスペリエンスを向上させることが簡単です。
  5. より簡単なテスト:状態はプログラムで管理されているため、フォームのユニットテストを作成して、さまざまなシナリオで予想どおりに動作するようにする方が簡単です。

Reactの制御されたコンポーネントを使用してフォーム検証を処理するにはどうすればよいですか?

Reactの制御されたコンポーネントを使用したフォーム検証の取り扱いには、状態を使用してフォーム要素の有効性を追跡することが含まれます。これがあなたがそれを行う方法です:

  1. 検証ロジック:フォーム入力の妥当性を確認する関数を書き込みます。これらは、必要なフィールドの単純なチェック、または電子メール形式、パスワード強度などなどのより複雑な検証です。

     <code class="javascript">const validateEmail = (email) => { const re = /^[a-zA-Z0-9._-] @[a-zA-Z0-9.-] \.[a-zA-Z]{2,4}$/; return re.test(String(email).toLowerCase()); };</code>
    ログイン後にコピー
  2. 検証のための状態:状態変数を追加して、フィールドが有効かどうかを追跡し、エラーメッセージを保持する場合があります。

     <code class="javascript">const [email, setEmail] = useState(''); const [emailError, setEmailError] = useState('');</code>
    ログイン後にコピー
  3. 変更に関する検証を更新する: handleChange関数内で、検証関数を呼び出し、それに応じて検証状態を更新します。

     <code class="javascript">const handleEmailChange = (event) => { const newEmail = event.target.value; setEmail(newEmail); if (!validateEmail(newEmail)) { setEmailError('Please enter a valid email address'); } else { setEmailError(''); } };</code>
    ログイン後にコピー
  4. 検証フィードバックを表示:検証状態を使用して、エラーメッセージまたは成功指標をリアルタイムでユーザーに表示します。

     <code class="jsx"><input type="email" value="{email}" onchange="{handleEmailChange}"> {emailError && <div style="{{color:">{emailError}</div>}</code>
    ログイン後にコピー
  5. フォームの提出:フォームが送信されたら、検証状態を確認して、提出を続行するか、エラーを表示するかを決定できます。

     <code class="javascript">const handleSubmit = (event) => { event.preventDefault(); if (!emailError) { // Proceed with form submission } else { // Handle form submission errors } };</code>
    ログイン後にコピー

このアプローチを使用すると、検証がリアルタイムで発生するシームレスなユーザーエクスペリエンスを作成し、ユーザーが進むにつれてエラーを修正するのに役立ちます。

Reactの制御されたコンポーネントと制御されていないコンポーネントの違いは何ですか?

Reactの制御されたコンポーネントと制御されていないコンポーネントの主な違いは、フォームデータの管理と処理方法にあります。

  1. 国家管理:

    • 制御されたコンポーネント:これらのコンポーネントには、親コンポーネントが管理する状態と動作があります。親コンポーネントは、小道具を使用して現在の値とイベントハンドラーを子コンポーネントに渡し、入力の値を効果的に制御します。
    • 制御されていないコンポーネント:これらのコンポーネントは、内部的に独自の状態を管理します。 Refを使用して、DOMから直接フォーム要素の現在の値にアクセスします。
  2. データフロー:

    • 制御されたコンポーネント:データはコンポーネントの状態からDOMに流れます。入力値の変更は、状態を更新するイベントハンドラーを通過する必要があります。
    • 制御されていないコンポーネント:データは、コンポーネントの状態をバイパスして、必要に応じてREFを使用してDOMから直接読み取られます。
  3. 予測可能性と制御:

    • 制御されたコンポーネント:状態はプログラムで管理されているため、より多くの制御と予測可能性を提供します。これは、データをリアルタイムで検証、変換、または処理する必要がある複雑なフォームに最適です。
    • 制御されていないコンポーネント:セットアップが簡単で、フォームの提出など、データに1回だけアクセスする必要がある単純なフォームには推奨される場合があります。ただし、フォームの動作に対する制御が少なくなります。
  4. 使用例:

    • 制御されたコンポーネント:リアルタイムの検証、複雑なデータ操作、または複数のコンポーネントでフォームロジックを再利用する必要がある場合に必要なフォームに最適です。
    • 制御されていないコンポーネント:単純な検索入力など、各フィールドの状態を積極的に管理する必要がない迅速でシンプルなフォームに役立ちます。

要約すると、制御されたコンポーネントはより多くの制御を提供し、複雑なフォームの相互作用に適していますが、制御されていないコンポーネントはよりシンプルで基本的なユースケースにより適しています。

以上がReactで制御されたコンポーネントをどのように作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート