HOCを使用してフォームを開発し、Formikをカスタムコンポーネントに挿入しますFormikは、フォームの作成と保守のプロセスを簡素化することを目的として、Reactで最も採用されているフォーム管理ツールになりました。Formikは、フォームコンテキストを提供し、インポート可能なコンポーネントとHOCの範囲が狭いフォームを管理するための基本構造を定義します。Formikで解決されたフォームコンテキストの問題により、開発者はフォームから達成しようとしている動作に自由に集中できます。この記事では、Formikの高階コンポーネントを使用してフォームの開発を支援する方法と、これが有益である理由について説明します。Formikコンテキストをカスタムコンポーネントに接続して、それらもフォームの一部になる方法についても説明します。このトークのコード例をテストするには、プロジェクトへの依存関係としてFormikを追加するだけです。formikFormikは、さまざまなpropsフォーム要素を渡し、検証と送信を処理し、入力が相互作用したかどうかを自動的にチェックします。これらの小道具はすべてここにリストされており、Formikのバックボーンです。これらの小道具がコンポーネントに注入されている限り、そのコンポーネントにはFormikコンテキストがあり、Formikが提供するすべてのものを利用できるようになります。withFormik。withFormikコンポーネントをFormikでラップする方法はどれを採用する必要がありますか?答えは、何に慣れているかによって異なります。構文的には異なりますが、どちらも同じFormikコンテキストを提供します。この記事の終わりまでに、私withFormikたちが探求するいくつかの理由から、HOCを支持するでしょう。Reactフォームを一般的にどのように進化させるかについての短い旅から始めて、HOCがより良いソリューションになり得る理由を分析してみましょう。/>ラッパーを使用してFormikコンテキストをフォームに提供する方が快適な場合があります。必要なのは、フォームをrender埋め込みコンポーネントとして小道具内に渡すことだけです。コンポーネントのラッピングの決定は必要ありません。プレゼンテーションとコンテナコンポーネントの関係も必要ありません。/>するため、フォームの開発を支援するためにコンポーネントもインポートします。HOC自体として機能し、FormikコンテキストをバニラHTMLフォーム要素にラップし、開発者が心配することなく、その名前、値、およびハンドラーを要素にリンクします。これは時間とスペースを節約するのに便利ですが、入力を含まないコンポーネント、つまりフォームの状態を必要とするが入力自体を持たないコンポーネントには適していません。このようなアドホックなユースケースについては、さらに下の別のHOCにアクセスします。/>connect()フォームの最初の反復は、次のようになります。/>onSubmit、などのFormikハンドラー、validateおよびその他の小道具(で省略...)を無名関数で満足させています。Formikのドキュメントを参照すると、どの引数がどのハンドラー関数に渡されるかが正確にわかっているため、入ってくるものを分解することもできます。console.log(props.values.email);}基本的なフォームが定義されたので、最適化を開始することができます。論理的な次のステップは、ロジックとUIを分離して、より管理しやすく読みやすいセットアップにすることです。/>引き続きコンポーネントを利用して、コードの再フォーマットを検討できます。これをすぐに実行して、各ハンドラーをコンポーネント内の定義済み関数と、フォームマークアップ用の個別のコンポーネントに分割できます。/>コンポーネントがフォームのマークアップを担当するようになりました。これにより、Formikコンテキストが引き続き挿入され、そこからアクセスできます。今回は、小道具は分解されておらず、構文がさらに簡素化されています。/>引き続きフォームの動作を処理しますが、匿名ハンドラー関数を独自の明示的に定義された関数に分離するようになりました。現在、マークアップとロジックを別々のコンポーネントに保持しながら、プレゼンテーションコンポーネントとコンテナコンポーネントのイデオロギーを満たしています。これらの関数を別のモジュールからインポートすることもできますが、これにより、特定の場所にあるすべてのフォームロジックが犠牲になります。フォームのモジュール化(オプション)複数のフォームが同一の方法を利用する場合Modularisingに有用であるvalidation、onBlur、onChangeこれらのコンポーネントは、実際に再使用されている場合が、これにのみ意味をなす等、。フォームがアプリケーション全体のさまざまなコンポーネントで使用されている場合、この概念はフォームのマークアップ自体にも適用できます。次のことを考慮してください。/>ただし、これを行う必要はありませんwithFormik。HOCの形式でソリューションがすでに提供されています。/>て、withFormikHOCがフォーム作成の取り組みをさらに最適化することに気づきました。withFormikラップされたコンポーネント内にFormikコンテキストを挿入するHOCです。これは、フォームコンポーネントをラップするために使用できるインポート可能な関数として含まれています。...})(MyForm);上記の例では、3つのフィールドのみを強調表示しており、入力に初期値を提供し、検証ハンドラーと送信ハンドラーをそれぞれ提供できます。withFormikフォームの動作の定義を単純化するのに最適な、渡すことができるフィールドの範囲があります。enableReinitialise:フォームを再初期化できるようにする場合、またはラップされたフォームコンポーネントの小道具が変更された場合にデフォルトの状態にリセットする場合は、オンにします。これはデフォルトでオフになっていますが、小道具がフォームの作成方法を操作する場合に役立つことがあります。props、ソフトウェアオプションを決定するためにハードウェアコンポーネントに依存するデスクトップコンピューターのカスタムビルドを構成していた場合です。これらのハードウェアがprops更新されると、使用可能なソフトウェアオプションを表示するフォームも更新されます。isInitialValid:フォームの初期化時に検証メッセージを表示するのに非常に便利です。falseに設定すると、結果のエラーがオフから表示されますmapPropsToStatus:フォームに任意の状態を挿入する手段を提供します。これらは、プレゼンテーション構成からフォームに含まれる他のコンポーネントにまで及ぶ可能性がありますvalidateOnBlur:フォーカスを離れるとすぐに要素を検証します。デフォルトでオンになっていますが、これは静的要素に役立ちます。動的要素を使用する場合は、リアルタイムの検証が必要です。これにより、最後に言及する分野に進みます。Promise<any>Formikの第一人者が間違いなく知っておくべきことが他にもいくつかあります。これらをもう少し詳しく見ていきましょう。FormikBag私たちはactions今、数回議論を提供しました。—個々の入力およびフォーム自体に対して実行する一連のメソッドまたはアクションを指します。小道具スキーマの検証FormikはYupスキーマ検証をサポートしています。事前定義されたスキーマに基づいてフォーム値を検証する手段。注:ここで紹介する別の記事を公開しました。yupこのyupパッケージは、Javascriptコミュニティで今でも人気があります。構文を単純化でき、「手動検証」ステートメントよりもはるかに少ないコードで済み、多くの場合、ifステートメントの形式で提供されます。emailフィールドの例として、submitted_date非表示のフィールドとともに、yupスキーマオブジェクトを使用してvalidationSchema、次のように経由してFormikに挿入できます。/>コンポーネントを使用してインラインJSXを介してフォームをラップするためのより洗練されたソリューションであると判断しました。以前のソリューションで利用可能なすべてのコンテキストを維持し、モジュール性とDRYの原則を促進しながら構文をさらに形式化します。Formikが提供する他のHOCに言及せずに結論を出すことはできません。/>コンポーネントとともに内部的に使用されますが、フォームの状態を必要とするコンポーネントを構築する場合に利用できるように公開されています。これは、どのコンポーネントが入力を含む、フォームの状態へのアクセスを得ることができることを意味しnames、values、errors、フォーム要素がタッチされたかどうか、などこれはどこで役に立ちますか?さて、生年月日を入力するサインアップフォームを想像してみてください。BirthdayMessage誕生日が当日である場合、コンポーネントを導入できます。connect(BirthdayMessage);このBirthdayMessageコンポーネントは、上記の例の最後の行でFormikの接続でラップされ、小道具を介してFormikコンテキストを提供します。このような個人的なタッチをアプリケーションに追加すると、ブランド価値が非常に高くなり、よりパーソナライズされたアプリの全体的なエクスペリエンスが向上します。getInFormikからユーティリティ関数もインポートしたことに注意してください。getInパスを介してオブジェクトから値を返すだけで、値を取得する安全な手段を提供し、未定義が返されないようにします。CodeではCMD+メソッドをクリック)でFormikのファイルをチェックして、定義ファイルにジャンプします。getInTypescriptで定義されている以下の実装を含めました。Formikは確かにTypescriptに実装されているため、TypescriptベースのReactプロジェクトでの使用にも適しています。/>オブジェクトに対してそれらを使用することの利点に光を当てることを目的としています。/>とモードモジュラーデザインパターンにコードをリファクタリングする前に、withFormikそのようにユーティリティを伴いますconnect。Formikのより包括的な紹介については、紹介として捧げられた私の記事をチェックしてください。/>構成可能なリストなど、入力の可変配列を操作する手段である専用の記事のコンポーネントについても詳しく説明しました。アドレスに変換し、コンピュータが接続できるようにします。脳卒中は、いつでも誰でも起こり得る医療上の緊急事態です。これは、脳の一部への血流が中断され、脳機能が突然失われることで発生します。Bテストに直接進んでください。Bテストは、2つの異なるバージョンのウェブサイトに対するユーザーのエンゲージメントを比較することに焦点を当てたUX調査方法です。今日、AppStoreの多くのアプリは、テーブルビューをスクロールしながらテーブルビューヘッダーのコンテンツをスケーリングするような動作をします。このような動作を実現するための最も簡単なアプローチを紹介します。DOM操作とは何ですか?最初のブログで約束したように、「DOMとは何ですか?」これが「DOM操作」に関するブログです。このブログでは、DOMについて詳しく説明し、DOM操作とは何かとその方法について説明します。Node.jsストリームの動作Node.jsでストリームがどのように機能しているか疑問に思ったことはありませんか?私が持っていた。