Создание реактивных форм в React с помощью Formik

месяц назад·1 мин. на чтение

В этой статье мы покажем, как использовать библиотеку Formik для создания реактивных форм в React.

Formik - это библиотека для управления формами в React. Она предоставляет мощные инструменты для обработки ввода данных, валидации и отправки формы на сервер. В этой статье мы рассмотрим, как использовать Formik для создания реактивных форм в функциональных компонентах React.

Установка 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 - метод для сброса значений полей формы
Это только некоторые из возможностей Formik. Вы можете ознакомиться с полной документацией на официальном сайте, чтобы узнать больше.

Итоги

Formik - это мощная и гибкая библиотека для создания реактивных форм в React. Она предоставляет все необходимые инструменты для управления формами, валидации и отправки данных. В этой статье мы рассмотрели основы использования Formik в функциональных компонентах React. Теперь вы можете применить эти знания в своих проектах и создавать интерактивные и удобные формы.

Полное руководство по React

2 года назад·3 мин. на чтение

Это руководство поможет плавно войти в Реакт разработку и понять как использовать react.

Мы начнем с самых базовых концепций. Рассмотрим различные варианты добавления ReactJS на сайт и создания React проекта. Создадим первые компоненты и шаг за шагом будем подробно рассматривать все части компонента - JSX, события, стили, хуки и т.д. Данный react туториал на русском разделен на удобные части, каждая из которых включает подробное объяснение и простые примеры. Этот гайд подойдет и для начинающих react разработчиков. Также весь API собран в удобный справочник, в котором можно найти подробное объяснение конкретных функций React.

Установка

В этом разделе полного руководства по Реакт собраны все варианты установки React. Можно создать проект на React с нуля или постепенно внедрять его в существующее приложение. Также узнаем как настроить базовый набор инструментов на компьютере для разработки и отладки React приложения.

Интерфейс пользователя

В этой части руководства по React мы напишем первый React компонент. React компоненты - это переиспользуемые элементы пользовательского интерфейса. В приложении React каждая часть пользовательского интерфейса является компонентом.

Добавление интерактивности

Эта часть руководства по React посвящена тому как обрабатывать действия пользователя. Некоторые элементы на экране обновляются в ответ на действия пользователя. Например, клик по галерее изображений переключает активное изображение. В React данные, которые меняются со временем, называются состоянием. Вы можете добавить состояние к любому компоненту и обновить его по мере необходимости. В этой части курса по Реакт вы узнаете, как писать компоненты, которые обрабатывают взаимодействия, обновляют свое состояние и отображают разные выходные данные с течением времени.

Управление состоянием

Данная часть react js руководства включает подробное объяснение работы с состоянием. По мере роста вашего React приложения полезно более внимательно относиться к тому, как организовано состояние и как данные передаются между вашими компонентами. Избыточное или повторяющееся состояние является распространенным источником ошибок. В этой части вы узнаете, как правильно структурировать состояние, как поддерживать логику обновления состояния и как обмениваться состоянием между компонентами.

Продвинутые темы

Некоторым из ваших компонентов может потребоваться управление и синхронизация с системами вне React. Например, вам может потребоваться сфокусировать ввод с помощью API браузера, воспроизвести и приостановить видеопроигрыватель, реализованный без React, или подключиться и прослушать сообщения с удаленного сервера. В этой части курса по Реакт вы узнаете о лозейках, позволяющих «выйти за пределы» React и подключиться к внешним системам. Большая часть логики вашего приложения и потока данных не должны полагаться на эти функции.
  • Доступ к данным через рефы
  • Управление DOM с помощью рефов
  • Синхронизация с помощью эффектов
  • Вам может не понадобиться эффект
  • Жизненный цикл реактивных эффектов
  • Отделение событий от эффектов
  • Удаление лишних зависимостей эффектов
  • Переиспользование логики с кастомными хуками