配列とネストされたオブジェクト

Formikは、ネストされたオブジェクトと配列を標準でサポートしています。これらはどちらも同じ構文を利用するため、ある程度関連しています。

ネストされたオブジェクト

Formikの`name`プロップスは、lodashライクなドットパスを使用してネストされたFormik値を参照できます。つまり、フォームの値をフラット化する必要がなくなります。

import React from 'react';
import { Formik, Form, Field } from 'formik';
export const NestedExample = () => (
<div>
<h1>Social Profiles</h1>
<Formik
initialValues={{
social: {
facebook: '',
twitter: '',
},
}}
onSubmit={values => {
// same shape as initial values
console.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>
<Formik
initialValues={{
friends: ['jared', 'ian'],
}}
onSubmit={values => {
// same shape as initial values
console.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>
<Formik
initialValues={{
'owner.fullname': '',
}}
onSubmit={values => {
// same shape as initial values
console.log(values);
}}
>
<Form>
<Field name="['owner.fullname']" />
<button type="submit">Submit</button>
</Form>
</Formik>
</div>
);
このページは役に立ちましたか?

ニュースレターの購読

最新のFormikニュース、記事、リソースをメールでお届けします。

Copyright © 2020 Formium, Inc. All rights reserved.