Build forms in React, without the tears.
npm install formik
import { useFormi, Formik } from 'formik';
<Formik>
{(formik) => (...)}
</Formik>
const onSubmit = (values, actions) => { ... };
const initialValues = { email: '', password: '' };
<Formik initialValues={initValues} onSubmit={onSubmit}>
<Input
name='email'
placeholder='email'
value={formik.values.email}
onBlur={formik.handleBlur}
onChange={formik.handleChange}
/>
Обробляємо помилки валідації даних та повертаємо об'єкт зі списком помилок
const onValidate = (values) => {
const errors = {};
if (!values.email) {
errors.email = 'email require';
}
return errors;
}
<Formik validate={onValidate}>...</Formik>
<Formik ...>
{(formik) => (
<Input name='email' ... />
{(formik.touched.email && formik.errors.email) && (
<div type='danger'>{errors.email}</div>
)}
)}
</Formik>
npm install yup - інстаюємо
const validationSchema = yup.object().shape({
email: yup.string().required().email(),
});
<Formik ... validationSchema={validationSchema}>
const formik = useFormik({ initialValues, onSubmit, validationSchema });
<form onSubmit={formik.handleSubmit}>
<Input
name='email'
placeholder='email'
value={formik.values.email}
onBlur={formik.handleBlur}
onChange={formik.handleChange}
/>
{formik.errors.email && <div type='danger'>{formik.errors.email}</div>}