Керування державою формування реагування з Формаком

Feb 5, 2026
Як
Manage React form
(Зображення кредиту: Matt Crouch)

Ласкаво просимо до нашого керівництва щодо того, як керувати станом форми React Formik. Форми елементів зберігають свої цінності у власній внутрішній стан - при шанувальників з державним підходом реагування. Щоб зробити дві роботи разом, нам потрібно більше залученого рішення, наприклад, використання контрольних компонентів для кожного поля.

Але є ще багато аспектів створення форми, ніж просто захоплення даних. Нам потрібно перевірити, щоб форматування правильно, всі необхідні поля були встановлені, і що все було успішно відправлено. Це призводить до великої складної логіки, яка може швидко побудувати. Це те, де Формак може допомогти.

Для отримання додаткових ресурсів, щоб допомогти покращити свій веб-дизайн, перегляньте наше розбиття Інструменти для веб-дизайну і хмара зберігання Варіанти. Починаючи з нуля? Вибрати право Веб-будівельник і отримати веб хостинг Служба прямо з нашими круглими.

Що таке formik?

Форма є легка бібліотека, яка обробляє ці проблеми. Обгортання форми з постачаними компонентами, ми отримуємо багато цієї поведінки безкоштовно. Все, що нам потрібно постачати, - це код для обробки того, що робить нашу форму унікальною.

Щоб допомогти нам дослідити, що може зробити formik, ми будемо побудувати невелику заявку на голосування. Користувач може ввести своє ім'я та голосувати за одним з варіантів постачання. Якщо все добре, форма буде надіслано, але якщо ні, користувач отримує повідомлення про помилку.

01. Початок роботи

Щоб запустити, відкрийте каталог "Підручник" від підручників у командному рядку. Встановіть залежності та запустіть сервер. Ця програма побудована за програмою CREATE-RECAT-APP і включає його пакунки, а також сам Формак та пару інших, щоб допомогти у стилі.

 & gt; npm встановлення
& gt; NPM починається 

Сервер розробки розпочнеться, а додаток відкриється у браузері. Файл App.js контролює всю програму, яка надасть наш контейнерний компонент для форми. Відчини src / app.js І імпортувати & lt; голосування & gt; компонент.

 Імпортувати голосування від "./voteContainer";

Потім додайте його до програми.

 & lt; розділ ClassName = "Vote-Container" & GT;
  & lt; голосування / & gt;
& lt; / розділ & gt; 

02. Створіть форму Формак

Формикові форми можуть бути створені двома способами. Точний з компонент вищого порядку дає нам змогу обернути існуючий компонент або використовувати & lt; formik & gt; Компонент з рендерингом, який виконує таку ж функцію, яка є те, що ми будемо використовувати.

Всередині voteContainer.js, створіть функціональний компонент, який буде тримати всю логіку для форми. Це повертає a & lt; formik & gt; компонент, який робить нашу форму. Забезпечити початкове значення для полів, які ми додамо пізніше через початкові значення проп.

 Імпорт {formik} з "formik";
Імпортувати голосування від "./vote";

Функція голосування () {
  Повернення & lt; formik
    Початкові значення = {{name: "", Відповідь: ""}}
render = {props = & gt; & lt; голос {... реквізит} / & gt;} / & gt; 

03. Створити компонент голосування

Точний & lt; голос & gt; Компонент містить структуру форми. Маючи логіку formik, ми можемо зберегти компонент форми якомога простий.

Створіть компонент голосування всередині Vote.js, що використовує & lt; форма & gt; компонент з формату. Додайте кнопку, щоб надіслати форму як звичайно.

 Імпорт {Форма} від "Формак";
Функція голосування () {
  повернення ("
    & lt; форма класу = "голос" & gt;
      & lt; Вхідний тип = "Надіслати" value = "Голосувати зараз" / & gt;
    & lt; / form & gt;
  );
} 

04. Додати поля

Formik відстежує зміни до кожного поля і надасть їм після подачі форми. Це робить все це через події, що випускаються з форми, і кожне поле в межах нього.

На рівні форми є два конкретних подій - подати та скинути. Коли форму подає, нам потрібен формiку, щоб взяти на себе і виконувати свої чеки, за допомогою розрядження подія очищення держави. Імпортований & lt; форма & gt; Компонент зв'язує ці події для формування.

Тепер ми можемо почати додати наше перше поле. Кожен голос повинен супроводжуватися ім'ям, що означає, що нам потрібен текстовий вхід.

Точний & lt; поле & gt; компонент робить таку ж роботу, як & lt; форма & gt; робить для всієї форми. Він пов'язує необхідні події та реквізити, такі як назва та значення, щоб показати стан польового стану.

Додайте поле у ​​форму та підключіть його до етикетки. Ці роботи, як вони будуть в звичайних формах HTML.

 Імпорт {field} з "formik";
& lt; label htmlfor = "назва" & gt; name & lt; / label & gt;
& lt; поле autocomplete = "name" id = "назва" name = "назва" type = "текст" / & gt; 

05. логіка постачання

Нам не потрібно працювати з будь-якими заходами браузера, щоб подати, як нахабний Подія обробляється для нас. Але нам потрібно поставити логіку для обробки подання. Зворотний виклик все ще називається нахабний Але це замість цього отримує значення форми безпосередньо. Він також отримує "сумку" - об'єкт, що містить кілька методів взаємодії з формою, коли він подає.

Оскільки ці дані, як правило, будуть спрямовані на сервер, ця функція також може бути асинхронною. Формак має особливий вихваляння Запробуйте, що він встановлюється автоматично, коли починається подання. За допомогою функції Async ми можемо зачекати, поки форма не надіслала та встановити, що назад до False.

Назад всередині VoteContainer.js, ми можемо додати нашу логіку подання. Створити функцію і передайте його до & lt; formik & gt; компонент. Для цього прикладу ми не будемо надсилати на сервер, але ми можемо використовувати затримку, щоб імітувати латентність мережі.

 const onsubmit = async (значення, сумка) = & gt; {
    чекають нової обіцянки (вирішити = & gt; attimideout (рішучість, 1000));
    bag.setsubmitting (false);
    Console.Log ("Форма подана", значення);
  };
return & lt; formik [...] onsubmit = {onsubmit} / & gt ;; 

06. Стан дисплея

Ми також повинні відображати, що подання держави у формі. Щоб запобігти подвійному подання, ми можемо вимкнути кнопку під час подання форми. Формак проходить у форму всередині vote.js як prop. Ми можемо витягнути це і застосувати його до кнопки.

 Функція голосування ({assumment}) {[...]}
& lt; input disabled = {assemmitting} type = "Надіслати" value = "голос зараз" / & gt; 

07. Додати поле для імені

На даний момент форма може бути подана без введення імені. Оскільки це необхідне поле, ми повинні позначати це користувачеві.

Корінь & lt; formik & gt; Компонент також приймає перевірку опору, яка є функцією, яка виконує перевірку та повертає об'єкт. Кожна пара ключової вартості являє собою поле та повідомлення про помилку. Якщо у цьому об'єкті не має значення, він вважається дійсним. Форма буде подано лише тоді, коли ця функція повертає порожній об'єкт. Функція отримує значення форми як аргумент. Для необхідного поля потрібно лише перевірити значення не є порожньою рядком.

Назад всередині votecontainer.js, створіть перевірку функції зворотного дзвінка, щоб перевірити це значення та підключити його до formik.

 Const Validate = значення = & gt; {
    rerors = {};
    if (значення.Name === "") {
      rerors.name = "Потрібна назва";
    }
    Повернення помилок;
  };
return & lt; formik [...] Validate = {Validate} / & gt; 

08. Помилки відображення

Потім ці помилки передаються до Vote.js як помилки опори. Щоб відобразити помилки inline, нам потрібно відповідати помилкам до поля форми.

 Функція голосування ({andustment, помилки, торкнулися}) {[...]}
& lt; div classname = "вхідна група" & gt;
  & lt; label htmlfor = "назва" & gt; name & lt; / label & gt;
  & lt; div
    classname = {classnames ({{
      "Validation-Group": Правда,
      Помилка: !! rerors.name & amp; & amp; touched.name
    })}
  & gt;
    & lt; поле autocomplete = "name" id = "назва" name = "назва" type = "текст" / & gt;
    {!! rerors.name & amp; & amp; touched.name & amp; & amp; ("
      & lt; div classname = "помилка-повідомлення" & gt; {rerors.name} & lt; / div & gt;
    )}
  & lt; / div & gt;
& lt; / div & gt;

Формак буде перевіряти форму кожного разу, коли вона оновлюється. Форма з великою кількістю полів негайно буде заважати помилками після першої зміни. Щоб уникнути цього, ми відображаємо лише помилку, коли поле було "торкнулося", то це було взаємодіяти з певною точкою. Коли формі подає, Formik торкнеться всіх полів і показати будь-які приховані помилки.

09. Додати поле відповіді

Manage React

(Зображення: © Matt Crouch)

Завдяки поліцейському полі, ми можемо перейти до відповідей. Підхід, який ми використовували до сих пір працює добре для звичайних текстових входів, але не підходить для декількох входів, які потрапляють під тією самою іменем поля, наприклад, група перемикачів.

Поки ми можемо включити кілька & lt; поле & gt; Компоненти з однаковою назвою, ми повинні уникати повторюючи себе якомога більше. Замість цього formik дозволяє нам пройти власний компонент у & lt; поле & gt; Це може керувати ними як один.

Точний & lt; answergroup & gt; Компонент працює, подібним до введення тексту. Він приймає опції Prop, який є масивом, що містить параметри для відображення. Вони перетворюються на стильові перемикачі, які дозволяють користувачам вибирати відповідь. Включіть цей компонент у Vote.js. За допомогою & lt; поле & gt; вона отримує ті самі реквізит, як імен, а також будь-які додаткові послуги, у цьому випадку Параметри постійна.

 Імпорт відповіді з "./answergroup";
& lt; Поле компонент = {answergroup} Опції = {Опції} NAME = "Відповідь" / & gt;

Manage React

(Зображення: © Matt Crouch)

Нарешті, ми повинні вимагати відповіді у нашій функції перевірки в голосуванні. Процес такий же, як і з поля імені.

 if (значення.answer === "") {
  rerors.answer = "Відповідь потрібна";

Зберігаючи перевірку та подання логіки окремо і використовуючи Formik, щоб вишивати все разом, ми можемо тримати кожну частину маленьким і легким для розуміння.

Цей вміст спочатку з'явився чистий журнал . Читати далі Веб-дизайн Статті Тут .

Читати далі:

  • Як перевірити сайти та програми реагування
  • 6 величезних веб-дизайну для 2020 року
  • Майстер мінімалізм у веб-дизайні

Як - Найпопулярніші статті

Як анімувати з бібліотекою Mo.JS

Як Feb 5, 2026

(Зображення кредиту: PEXESS / FRНКУ KAGUMBA) Mo.JS - це унікальна бібліотека..


Побудуйте голосовий контроль UI

Як Feb 5, 2026

Ми бачили багато нових API, доданих до Інтернету за останні кілька років, які дійсно дозволили веб-контент..


Початок роботи з вавилем 7

Як Feb 5, 2026

JavaScript унікальний через широту екосистеми. Незважаючи на те, що нові ст�..


Дизайнер афінності: Як використовувати інструмент для пера

Як Feb 5, 2026

Він потребує невеликого введення, але афінний дизайнер є набором інструментів для редагування векторно..


Як створити анімований ефект типу

Як Feb 5, 2026

При використанні добре, Анімація CSS Можна додати відсотки та особистість до вашого..


Намалюйте оригінальну карту Таро

Як Feb 5, 2026

Коли я отримав свою першу палубу таро, я зачарований прекрасним твором..


Як зробити смачні текстури з олівцями

Як Feb 5, 2026

Під час навчання як малювати Натюрморт, важливо створити інте�..


Як поєднувати кольорові олівці

Як Feb 5, 2026

Навчання, як поєднувати кольорові олівці допоможуть вам отримати більше від ваших інструментів. Заміст�..


Категорії