В этой статье мы покажем, как использовать библиотеку Formik для создания реактивных форм в React.
Formik - это библиотека для управления формами в React. Она предоставляет мощные инструменты для обработки ввода данных, валидации и отправки формы на сервер. В этой статье мы рассмотрим, как использовать Formik для создания реактивных форм в функциональных компонентах React.
Импорт
После установки
Полезные свойства и методы
Formik предоставляет множество полезных свойств и методов для управления формой. Некоторые из них:
Установка Formik
Прежде чем начать, нам нужно установить Formik. Вы можете сделать это, выполнив следующую команду:npm install formik
Импорт Formik
и необходимых компонентов
После установки Formik
мы можем импортировать его и необходимые компоненты в нашем функциональном компоненте:
import React from "react"; import { Formik, Form, Field, ErrorMessage } from "formik";
Создание формы
Для создания формы мы будем использовать компонентFormik
. Он принимает объект с начальными значениями полей формы, функцию обработчика отправки формы и другие необязательные свойства.
const MyForm = () => { return ( <Formik initialValues={{ name: "", email: "" }} onSubmit={(values) => { // Обработка отправки формы console.log(values); }} > <Form> {/* Поля формы */} </Form> </Formik> ); };
Добавление полей формы
Для добавления полей формы мы используем компонентField
. Он принимает имя поля, тип и другие свойства. Мы также можем использовать компонент ErrorMessage
для отображения сообщений об ошибках.
const MyForm = () => { return ( <Formik initialValues={{ name: "", email: "" }} onSubmit={(values) => { // Обработка отправки формы console.log(values); }} > <Form> <div> <label htmlFor="name">Имя:</label> <Field type="text" id="name" name="name" /> <ErrorMessage name="name" component="div" /> </div> <div> <label htmlFor="email">Email:</label> <Field type="email" id="email" name="email" /> <ErrorMessage name="email" component="div" /> </div> <button type="submit">Отправить</button> </Form> </Formik> ); };
Валидация формы
Formik
также предоставляет удобные средства для валидации формы. Мы можем определить функцию валидации и передать ее в качестве свойства validate
в компонент Formik
.
const validateForm = (values) => { const errors = {}; if (!values.name) { errors.name = "Поле Имя обязательно для заполнения"; } if (!values.email) { errors.email = "Поле Email обязательно для заполнения"; } return errors; }; const MyForm = () => { return ( <Formik initialValues={{ name: "", email: "" }} validate={validateForm} onSubmit={(values) => { // Обработка отправки формы console.log(values); }} > {/* ... */} </Formik> ); };
Обработка отправки формы
Для обработки отправки формы мы передаем функцию обработчика в свойствоonSubmit
компонента Formik
. В этой функции мы можем выполнять любую логику, связанную с отправкой данных на сервер.
const MyForm = () => { return ( <Formik initialValues={{ name: "", email: "" }} validate={validateForm} onSubmit={(values, { setSubmitting }) => { setTimeout(() => { // Симуляция отправки формы console.log(values); setSubmitting(false); }, 2000); }} > {/* ... */} </Formik> ); };
Полезные свойства и методы Formik
Formik предоставляет множество полезных свойств и методов для управления формой. Некоторые из них:
values
- объект, содержащий значения полей формыerrors
- объект, содержащий ошибки валидацииtouched
- объект, содержащий информацию о том, каких полей "коснулся" пользовательhandleChange
- функция для обновления значения поля при его измененииhandleBlur
- функция для отслеживания "прикосновений" к полюisSubmitting
- флаг, указывающий, отправляется ли форма в данный моментisValidating
- флаг, указывающий, происходит ли валидация формы в данный моментresetForm
- метод для сброса значений полей формы