まず、Formikを使用してフォームを作成します。Formikは、Reactアプリケーションでフォームの状態と操作を管理するためのライブラリです。以下は、Formikを使用してフォームを作成する例です。
import { Formik, Field, Form, ErrorMessage } from 'formik';
const MyForm = () => {
return (
<Formik
initialValues={{ nestedObj: { key1: '', key2: '' } }}
onSubmit={values => {
// フォームの送信処理
}}
>
<Form>
<Field type="text" name="nestedObj.key1" />
<ErrorMessage name="nestedObj.key1" component="div" />
<Field type="text" name="nestedObj.key2" />
<ErrorMessage name="nestedObj.key2" component="div" />
<button type="submit">送信</button>
</Form>
</Formik>
);
};
export default MyForm;
次に、Yupを使用してフォームのバリデーションスキーマを定義します。Yupは、スキーマベースのバリデーションライブラリであり、フォームの入力値を検証するために使用されます。以下は、Yupを使用してフォームのバリデーションスキーマを定義する例です。
import * as Yup from 'yup';
const validationSchema = Yup.object({
nestedObj: Yup.object({
key1: Yup.string().required('key1は必須です'),
key2: Yup.string().required('key2は必須です'),
}),
});
export default validationSchema;
最後に、FormikとYupを組み合わせてフォームバリデーションを実行します。以下は、FormikとYupを組み合わせたコードの例です。
import { Formik, Field, Form, ErrorMessage } from 'formik';
import validationSchema from './validationSchema';
const MyForm = () => {
return (
<Formik
initialValues={{ nestedObj: { key1: '', key2: '' } }}
validationSchema={validationSchema}
onSubmit={values => {
// フォームの送信処理
}}
>
<Form>
<Field type="text" name="nestedObj.key1" />
<ErrorMessage name="nestedObj.key1" component="div" />
<Field type="text" name="nestedObj.key2" />
<ErrorMessage name="nestedObj.key2" component="div" />
<button type="submit">送信</button>
</Form>
</Formik>
);
};
export default MyForm;
上記の例では、FormikとYupを使用してネストされたオブジェクトを含むフォームのバリデーションを行っています。Formikはフォームの状態と操作を管理し、Yupはフォームのバリデーションスキーマを定義します。これにより、ユーザーがフォームに正しいデータを入力するかどうかを簡単に検証することができます。例では、nestedObj
という名前のネストされたオブジェクト内の2つのキー(key1
とkey2
)をバリデーションしていますが、必要に応じて他のキーを追加することもできます。
このように、FormikとYupを組み合わせることで、Reactアプリケーションでフォームの入力バリデーションを効果的に実装することができます。これにより、ユーザーが正しいデータを提供することができるようになり、アプリケーションの品質と使いやすさを向上させることができます。