国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
制御された反応フォームの構(gòu)築
なぜformikを選ぶのですか?
Formikの実裝
Formikを使用したフォーム検証
方法3: withFormik高次コンポーネント
実用的な例
エラーメッセージの表示
ユーザー名の生成
結(jié)論
ホームページ ウェブフロントエンド CSSチュートリアル Formikを使用してReactのフォームを処理します

Formikを使用してReactのフォームを処理します

Apr 07, 2025 am 10:00 AM

Formikを使用してReactのフォームを処理します

Webフォームは、Webサイトやアプリケーションに不可欠です。ネイティブHTMLフォームは基本的な機(jī)能を提供しますが、狀態(tài)を管理する、検証、および提出を複雑にすることができます。コンポーネント駆動(dòng)型のアプローチで反応すると、フォームの処理が簡素化されますが、それでも冗長コードにつながる可能性があります。軽量ライブラリであるFormikは、これらの課題にエレガントに対処し、州の管理、検証、および提出を簡素化します。

この記事では、FormikとのReactフォームの構(gòu)築を?qū)g証し、狀態(tài)、検証、および提出を処理する能力を紹介します?;镜膜蔙eactコンポーネントから始めて、Formikを統(tǒng)合します。

制御された反応フォームの構(gòu)築

Reactコンポーネントは、狀態(tài)と小道具に依存しています。 HTMLフォーム要素のvalue屬性を通じて內(nèi)部狀態(tài)を維持します。これにより、それらは制御されていないコンポーネントになります - DOMは狀態(tài)を管理します。ただし、Reactが狀態(tài)を管理する制御されたコンポーネントは、より良い制御と単一の真実源を提供します。

単純な制御されていないHTMLフォームは次のようになるかもしれません:

<div class="formRow">
  <label for="email">電子メールアドレス</label>
  <input type="email" id="email">
</div>
<div class="formRow">
  <label for="password">パスワード</label>
  <input type="password" id="password">
</div>
<button type="submit">提出する</button>

これを制御された反応成分に変換します。

関數(shù)htmlform(){
  const [email、setemail] = race.usestate( "");
  const [password、setPassword] = race.usestate( "");

  戻る (
    
setemail(e.target.value)} />
setPassWord(E.Target.Value)} />
); }

このアプローチは、フォーム値に対して単一の真実のソースを提供し、より簡単な検証とパフォーマンスの最適化を可能にします。

なぜformikを選ぶのですか?

Reactには多數(shù)のフォーム管理ライブラリが存在します(例、React Hook Form、Reduxフォーム)。 Formikは次のことを區(qū)別します。

  1. 宣言的アプローチ:抽象化により、狀態(tài)、検証、および提出が簡素化されます。
  2. エスケープハッチ:抽象化にもかかわらず、必要に応じてコントロールを提供します。
  3. 共同開催狀態(tài):コンポーネント內(nèi)にフォーム関連のロジックを保持します。
  4. 適応性: formikを必要に応じて使用することができます。
  5. 使いやすさ:シンプルで効果的です。

Formikをフォームコンポーネントに統(tǒng)合しましょう。

Formikの実裝

基本的なログインフォームを作成し、3つのFormik使用方法を調(diào)査します。

  1. useFormikフック
  2. Reactコンテキストを持つFormik(<formik></formik> ))
  3. withFormik高次コンポーネント

デモには、FormikとYupパッケージが必要です。

方法1:FormikフックuseFormik

現(xiàn)在のフォームは機(jī)能していません。 useFormikフックは、Formik関數(shù)と変數(shù)を提供します。返された値を記録すると、その內(nèi)容が明らかになります。

useFormik 、 initialValuesonSubmitハンドラーを備えた使用を使用します。

 //反応コンポーネント
関數(shù)baseformik(){
  const formik = useformik({
    initialValues:{email: ""、password: ""}、
    onSubmit(values){
      //提出ロジックをフォーム
    }
  });

  戻る (
    
{/ *フォーム要素 */}
); }

Formikを結(jié)合して要素を形成します:

 //反応コンポーネント
関數(shù)baseformik(){
  const formik = useformik({
    initialValues:{email: ""、password: ""}、
    onSubmit(values){
      //提出ロジックをフォーム
    }
  });

  戻る (
    
{/ * ...他のフォーム要素 */}
); }

これにより、送信( onSubmit={formik.handleSubmit} )と入力狀態(tài)( value 、 formik.getFieldPropsを介してonChange )を処理します。手動(dòng)の狀態(tài)管理とイベントの取り扱いは避けています。 getFieldPropshandleSubmitを破壊すると、コードの明確さがさらに向上します。

<formik></formik>コンポーネントは、ような內(nèi)蔵コンポーネントを使用して、さらに抽象化します<field></field>、<form></form> 、 そして<errormessage></errormessage>。これらのコンポーネントは、レンダリングプロップパターンを利用します。

 'formik'から{formik、field、form}をimport;

関數(shù)formikrenderprops(){
  const initialValues = {email: ""、password: ""};

  const onsubmit =(values)=> {
    alert(json.stringify(values、null、2));
  };

  戻る (
    <formik initialvalues="{initialValues}" onsubmit="{onSubmit}">
      {()=>(
        <form>
          <field classname="email formField" name="email" type="email"></field>
          {/ * ...他のフォーム要素 */}
        </form>
      )}
    </formik>
  );
}

Formikは狀態(tài)と提出を処理します。フォーム構(gòu)造に焦點(diǎn)を當(dāng)てます。

Formikを使用したフォーム検証

Formikは、フォームレベル( validateまたはvalidationSchemaを使用)、フィールドレベル、または手動(dòng)トリガーで検証を提供します。フォームレベルの検証は、フォーム全體を一度に検証します。 validateカスタム検証用ですが、 validationSchemaはYUPのようなライブラリを使用します。

validateを使用した例:

 const formik = useformik({
  // ...
  検証:()=> {
    const errors = {};
    if(!formik.values.email){errors.email = "必須"; }
    // ...その他の検証
    戻りエラー。
  }、
  // ...
});

YUPを使用したvalidationSchemaを使用した例:

 const formik = useformik({
  // ...
  validationschema:yup.object()。shape({
    電子メール:Yup.String()。電子メール( "Invalid Email")。必須( "必須")、
    // ...その他の検証
  })、
  // ...
});

フィールドレベルと手動(dòng)検証も可能です。

方法3: withFormik高次コンポーネント

withFormikは、フォームコンポーネントをラップする高次コンポーネントです。

実用的な例

エラーメッセージの表示とユーザー名の生成を示しましょう。

エラーメッセージの表示

Formikはエラー表示を簡素化します。 errorsオブジェクトを確認(rèn)し、メッセージを表示します。

<label htmlfor="email">
  電子メールアドレス
  {formik.touched.email && formik.errors.email}
</label>

または使用します<errormessage></errormessage>

<errormessage name="email"></errormessage>

ユーザー名の生成

FormikのsetValuesを使用して、電子メールからユーザー名を生成できます。

 onSubmit(values){
  formik.setValues({... values、username: `@$ {values.email.split("@")[0]}`});
}

結(jié)論

Formikは、Reactフォームの取り扱いを大幅に簡素化します。この記事では、基本について説明しています。高度な機(jī)能とユースケースについては、Formikのドキュメントを調(diào)べてください。

以上がF(xiàn)ormikを使用してReactのフォームを処理しますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負(fù)荷を組み合わせ、過度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお?jiǎng)幛幛筏蓼埂?/p>

外部対內(nèi)部CSS:最良のアプローチは何ですか? 外部対內(nèi)部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

私のCSSは小文字でなければなりませんか? 私のCSSは小文字でなければなりませんか? Jun 19, 2025 am 12:29 AM

いいえ、CSSDOESNOTHAVETOBEINLOWERCASE。

CSSケース感度:重要なことを理解する CSSケース感度:重要なことを理解する Jun 20, 2025 am 12:09 AM

cssismostlycase-inssensitive、buturlsandfontfamilynamesarecase-sensitive.1)propertiesandvalueslikecolor:red; areotcase-sensitive.2)urlsmustmatchtheserver'scase、例えば、/畫像/logo.png.3)

Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Jul 02, 2025 am 01:15 AM

Autoprefixerは、ターゲットブラウザスコープに基づいてCSS屬性にベンダープレフィックスを自動(dòng)的に追加するツールです。 1.エラーで接頭辭を手動(dòng)で維持する問題を解決します。 2. PostCSSプラグインフォーム、CSSを解析し、プレフィックスする必要がある屬性を分析し、構(gòu)成に従ってコードを生成する屬性を分析します。 3.使用手順には、プラグインのインストール、ブラウザーリストの設(shè)定、ビルドプロセスでそれらを有効にすることが含まれます。 4。メモには、接頭辭を手動(dòng)で追加しない、構(gòu)成の更新を保持すること、すべての屬性ではなくプレフィックスを維持することが含まれ、プリ??プロセッサでそれらを使用することをお?jiǎng)幛幛筏蓼埂?/p>

CSSカウンターとは何ですか? CSSカウンターとは何ですか? Jun 19, 2025 am 12:34 AM

csScountersCantAnationally-bersectionSandLists.1)usecounter-resettoinitialize、counter-incrementtoincrease、andcounter()orcounters()todisplayvalues.2)を組み合わせたjavascriptfordynamiccontenttoensureaCurateupdatesと組み合わせます。

CSS:ケースはいつ重要ですか(いつそうではありませんか)? CSS:ケースはいつ重要ですか(いつそうではありませんか)? Jun 19, 2025 am 12:27 AM

CSSでは、セレクターと屬性名はケースに敏感ですが、値、名前の色、URL、およびカスタム屬性はケースに敏感です。 1.バックグラウンドカラーや背景色など、セレクターと屬性名はケース非感受性です。 2。値の16進(jìn)數(shù)色は大文字と小文字を區(qū)別しますが、赤と赤などの名前の色は無効です。 3. URLは癥例に敏感であり、ファイルロードの問題を引き起こす可能性があります。 4.カスタムプロパティ(変數(shù))はケースに敏感であり、使用する場合はケースの一貫性に注意を払う必要があります。

conic-gradient()関數(shù)とは何ですか? conic-gradient()関數(shù)とは何ですか? Jul 01, 2025 am 01:16 AM

TheConic-Gradient()functionsscreateScular勾配の勾配は、測定されていることを確認(rèn)してください

See all articles