Formikは、ネストされたオブジェクトと配列を標準でサポートしています。これらはどちらも同じ構文を利用するため、ある程度関連しています。
Formikの`name`プロップスは、lodashライクなドットパスを使用してネストされたFormik値を参照できます。つまり、フォームの値をフラット化する必要がなくなります。
import React from 'react';import { Formik, Form, Field } from 'formik';export const NestedExample = () => (<div><h1>Social Profiles</h1><FormikinitialValues={{social: {facebook: '',twitter: '',},}}onSubmit={values => {// same shape as initial valuesconsole.log(values);}}><Form><Field name="social.facebook" /><Field name="social.twitter" /><button type="submit">Submit</button></Form></Formik></div>);
Formikは、配列とオブジェクトの配列も標準でサポートしています。`name`文字列にlodashライクなブラケット構文を使用することで、リスト内のアイテムのフィールドをすばやく作成できます。
import React from 'react';import { Formik, Form, Field } from 'formik';export const BasicArrayExample = () => (<div><h1>Friends</h1><FormikinitialValues={{friends: ['jared', 'ian'],}}onSubmit={values => {// same shape as initial valuesconsole.log(values);}}><Form><Field name="friends[0]" /><Field name="friends[1]" /><button type="submit">Submit</button></Form></Formik></div>);
リスト内のアイテムの操作(追加/削除など)の詳細については、`<FieldArray>`コンポーネントに関するAPIリファレンスセクションを参照してください。
このデフォルトの動作を回避したい場合は、Formikはドットを含むフィールドもサポートしています。
import React from 'react';import { Formik, Form, Field } from 'formik';export const NestedExample = () => (<div><h1>Social Profiles</h1><FormikinitialValues={{'owner.fullname': '',}}onSubmit={values => {// same shape as initial valuesconsole.log(values);}}><Form><Field name="['owner.fullname']" /><button type="submit">Submit</button></Form></Formik></div>);
最新のFormikニュース、記事、リソースをメールでお届けします。