React Hook Form - простая работа с формами

  Рет қаралды 27,195

PurpleSchool | Anton Larichev

PurpleSchool | Anton Larichev

Күн бұрын

Пікірлер: 78
@PurpleSchool
@PurpleSchool Жыл бұрын
🔗 Ссылки: React Hook Form: react-hook-form.com/ ⚡️Курс по React и Next: purpleschool.ru/course/nextjs Мои курсы по разработке: purpleschool.ru Telegram канал с полезными советами: t.me/purple_code_channel
@react-js-next
@react-js-next Жыл бұрын
как здорово что есть такие авторы!
@PurpleSchool
@PurpleSchool Жыл бұрын
Спасибо!
@noname-nh8mx
@noname-nh8mx Жыл бұрын
Не знаю в каких сложных случаях вы пользовались rhf, но на сложных кейсах уровень необходимой костыльности начинает поражать. А еще постоянно есть несколько способов сделать одно и то же, при том, что только 1 из способов работает нормально. Например хук watch экспортируемый из формы и хук useWatch. Казалось бы, одно и то же. Но нннет. Какое бы поле ты не указал в watch, компонент будет перерисован при изменении любого из полей формы. В то же время useWatch работает с перерисовками нормально. Дальше. При изменение стейта формы с состояния dirty - false, на dirty - true, опять же перерисовывается вся форма. Та же ситуация с isValid. (но только при первом изменении с isValid - true на isValid - false). Проперти внутри formState решили сделать проксями, поэтому чтобы работал ререндер завязанный на эти поля, нельзя их распаковывать. (а бывает и можно, но какую-то зависимость я так и не вывел, от раза к разу может работать, а может и нет) Догадаться об этом не прокуривая ишусы на гитхабе довольно тяжело. При этом есть хук useFormState который вроде бы работает нормально. Вопрос, зачем мне опять 2 способа сделать одно и то же, при том что один из них работает с подводными камнями? Также Controller HOC и useController хук тоже по разному работают с перерисовками. Метод {...register('fieldName')} лучше не использовать с анимациями и анмаунтами\маунтами, могут начаться непредсказуемые приколы с данными. При работе с field array, если мы хотим анимировать появление и исчезновение элементов в field array, начинаются просто невероятные пляски с бубном, потому что появляются тупо некорректные данные в хук форме. На гитхабе есть десяток ишусов с этим связанных без ответа. Просто закрытых, будто бы проблема не в rhf. Решение есть, но не тратя множество часов на прокуривание всего чего можно на гитхабе догадаться до него не легко. И в любом случае это костыль Вообщем по опыту - работать можно, но примерно 50% библиотеки работает с подводными камнями, если кейс чуть сложнее формы заполнения профиля. На разбирательство с которыми приходится тратить уйму часов, вероятно даже дней
@ROMVN95
@ROMVN95 Жыл бұрын
Может вам лучше отправить этот лонгрид на гитхаб разработчиков? Хороший фидбек получился
@PowWowVideo
@PowWowVideo Жыл бұрын
Согласен с нек пунктами.... Правда "watch" это не хук вовсе, это ж дилетанство :)
@noname-nh8mx
@noname-nh8mx Жыл бұрын
@@PowWowVideo да, действительно. Это что-то среднее. Оно и компонент перерисовывать умеет, и просто на изменение подписывать
@PowWowVideo
@PowWowVideo Жыл бұрын
Но вы правы в том, что если форма чуть сложнее логина, надо сильно разбираться и т@ться днями, чтобы заработало как надо. React Final Form более проще, интуитивней и предсказуемо
@noname-nh8mx
@noname-nh8mx Жыл бұрын
​@@PowWowVideo глянул исходники, в зависимости от переданного аргумента в watch(функция или не функция) делается подписка на событие или же возвращается результат вызова _getWatch. Что конкретно делает _getWatch разбираться желания нет, но что отчетливо видно - если вызвать watch не с функцией в аргументе, будет перерисовываться все поддерево. Все еще считаете это не что-то среднее? Может оно и не вызовет ошибку если вызывать watch в ифе как в случае с обычными хуками, но оно перерисовывает компонент Также вижу что при вызове _getWatch ему всегда передается аргумент isGlobal - true, возможно вопрос с перерисовкой при изменении любого поля в этом
@serikov4430
@serikov4430 Жыл бұрын
Было бы здорово ещё залезть внутрь и разобрать как самому можно сделать мини-библиотеку для работы на проекте, для того чтобы лучше понимать как это работает. Можно прям отдельным курсом по работе с формами.
@PurpleSchool
@PurpleSchool Жыл бұрын
Буду иметь ввиду 👍
@zeevnadiv8778
@zeevnadiv8778 2 ай бұрын
спасибо тебе, хороший человек!!! Большое дело делаешь, несешь свет в массы ;-)
@PurpleSchool
@PurpleSchool 2 ай бұрын
Пожалуйста)
@kimanowka
@kimanowka Жыл бұрын
Полно видео для новичков. Почему бы не сделать пару материал для middle , по той же самой архитектуре, какие-то интересные вещи в библиотеках. Такого контента вообще нет в русскоязычном ютьюбе
@PurpleSchool
@PurpleSchool Жыл бұрын
Буду иметь ввиду.
@Запискисамоучки
@Запискисамоучки 5 ай бұрын
и не говорите. Вроде и норм обзор, а вот сижу и приходится сразу лезть в доки. Тупо примера работы с сервером нет, ведь даже ошибку авторизации нужно отображать после попытки логина
@MegaMaxxon
@MegaMaxxon Жыл бұрын
Formik, yup. Интересно было бы сравнение услышать от автора.
@PurpleSchool
@PurpleSchool Жыл бұрын
👍
@СамирАбасов
@СамирАбасов Жыл бұрын
Стоит ли сравнивать то что обновилось месяц назад и то что обновилось 2 года назад.
@CJIu3eHb
@CJIu3eHb Жыл бұрын
​@@СамирАбасов Да и нужен ли yup, когда есть zod.
@tezis.digital
@tezis.digital Жыл бұрын
О, очень полезный контент! Спасибо!
@PurpleSchool
@PurpleSchool Жыл бұрын
Пожалуйста!
@ИванГорохов-ф8ж
@ИванГорохов-ф8ж 9 ай бұрын
брат, на будущее Vite (French word for "quick", pronounced /vit/ , like "veet")
@nk_77777
@nk_77777 2 ай бұрын
Полезный контент, спасибо!)
@PurpleSchool
@PurpleSchool 2 ай бұрын
Пожалуйста!
@Kotovar
@Kotovar Ай бұрын
Как всегда - огромное спасибо (:
@PurpleSchool
@PurpleSchool Ай бұрын
@@Kotovar пожалуйста!
@serikov4430
@serikov4430 Жыл бұрын
Антон, было бы здорово посмотреть ваш новый конфиг для neovim. Шрифт, тема, добавленные плагины. Можно сделать отдельный пост и прикладывать линк к нему.
@PurpleSchool
@PurpleSchool Жыл бұрын
Будет в следующем видео
@wev_dev_pro
@wev_dev_pro Жыл бұрын
Спасибо за видео
@PurpleSchool
@PurpleSchool Жыл бұрын
Пожалуйста 👍
@pizza-shlyapa
@pizza-shlyapa Жыл бұрын
Круто ! Только отображение клавиш пропало в второй половине видео.
@PurpleSchool
@PurpleSchool Жыл бұрын
Да, на монтаже уже заметил
@ruslan3040
@ruslan3040 Жыл бұрын
спасибо !
@PurpleSchool
@PurpleSchool Жыл бұрын
Пожалуйста!
@TheKykp
@TheKykp 11 ай бұрын
Добрый день, Антон! А Вы можете показать как вы используете react hook form в реальных проектах, когда вам нужно сделать компонент, который будет переиспользуемый например поле input, вы создаете отдельный юай компонент, который оборачиваете Controller или как вы обычно делает? Спасибо!
@PurpleSchool
@PurpleSchool 11 ай бұрын
Controller добавляется в нужно место, сами UI компоненты его не содержать, так как не всегда могут использоваться.
@TheKykp
@TheKykp 11 ай бұрын
​@@PurpleSchool спасибо за Ваш ответ, а Вы не могли бы если у вас будет время, записать на эту тему видео ролик, или подсказать в каком курсе вы разбираете эти примеры, дело в том, что я сделал как вы говорите, но мне потребовалось отслеживать введен ли в инпут текст что бы изменить бекграунд, и правильно было бы сделать такое поведение внутри самого компонента инпута, что бы он видел что он полный и менял фон, однако при использовании юз хук форм, мы отдаем управление инпутом, и теперь что бы отслеживать его наполнение нужно юзать watch, сразу возникает мысль в юз эффект, добавить отслеживание изменений поля, и если длина >= 1 то меняем фон, например передавая пропс в инпут. Но как то это кажется слишком сложным. И еще у меня есть одна проблема с этой библиотекой, когда устанавливаешь ошибку кастомную, например при ответе на запрос с бека, если юзер есть - то все ок, если юзера нет, setError('user") и текст ошибки, так вот эта ошибка, при клике на сабмит формы, почему то стирается, и следующий клик на форму уже отрисовывает компонент, в котором объект errors - пустой. Как вот такие моменты контролить? Спасибо ^_^
@кирилларистархов-ь7в
@кирилларистархов-ь7в 11 ай бұрын
@@TheKykp мб в состояние добавлять ошибку, и потом оттуда ее доставать и использовать в форме?(Только начал знакомиться с формами в реакт, не бейте)
@Sa1ahaddin
@Sa1ahaddin 3 ай бұрын
Спасибо за видео! А как ты сдела вывод ошибок в реальном времени?
@PurpleSchool
@PurpleSchool 3 ай бұрын
Это Nullls, но сейчас он не поддерживается, но есть замена none-ls
@deGGenerate
@deGGenerate Жыл бұрын
Лайк неглядя как всегда
@PurpleSchool
@PurpleSchool Жыл бұрын
Спасибо!
@ЕвгенийЯкунин-ф2д
@ЕвгенийЯкунин-ф2д Жыл бұрын
уже давно и с удовольствием пользуюсь библиотекой Mantine. Помимо отличного дизайна, у них есть много прекрасных хуков, в том числе и для форм. Никогда не пользовались Mantine, Антон?
@PurpleSchool
@PurpleSchool Жыл бұрын
Нет, но будет интересно глянуть
@parmetra
@parmetra Жыл бұрын
То есть уже встроенная валидация даже?
@dinarsharipov5022
@dinarsharipov5022 Жыл бұрын
Чисто для продвижения
@PurpleSchool
@PurpleSchool Жыл бұрын
Спасибо!
@dmaberlin
@dmaberlin Жыл бұрын
а что чаще юзают Hook Form или Formik допустим в связке с Tailwind и чисто CSS ? или надо практиковать и то и то
@PurpleSchool
@PurpleSchool Жыл бұрын
Мне кажется зависит от команды проекта и то и то в целом подходит хорошо для работы с формами
@СергейКорнев-э5у
@СергейКорнев-э5у Жыл бұрын
В ангуляре крутая очень валидация
@ПалочкаВыручалочка-ц2к
@ПалочкаВыручалочка-ц2к Жыл бұрын
Обьясните кому не трудно, я пробовал делать обработку формы по простому без использования реакт хук форм, правильно делать как на видео сделано?
@PurpleSchool
@PurpleSchool Жыл бұрын
Зависит от сложности формы и желания тащить библиотеки.
@vvks9901
@vvks9901 4 ай бұрын
я вообще не врубаюсь как форма работает
@kostasancez2358
@kostasancez2358 Жыл бұрын
Yup
@PurpleSchool
@PurpleSchool Жыл бұрын
👍
@arinqwerty
@arinqwerty 5 ай бұрын
спасибо🤍
@PurpleSchool
@PurpleSchool 5 ай бұрын
Пожалуйста!
@vitmih380
@vitmih380 Жыл бұрын
Чувак, громкость клавиш может тебе и ласкает слух. Но для видосов желательно использовать тихую клаву.
@ПалочкаВыручалочка-ц2к
@ПалочкаВыручалочка-ц2к Жыл бұрын
что за редактор кода?
@PurpleSchool
@PurpleSchool Жыл бұрын
kzbin.info/www/bejne/aoHdhIGEaZqnmaM
@siparat842
@siparat842 Жыл бұрын
Что за тема и шрифт?
@PurpleSchool
@PurpleSchool Жыл бұрын
One dark и шрифт Jerbrains Mono
@sieghardt8191
@sieghardt8191 9 ай бұрын
В новом NextJS использовать не получится уже. В 14 версии эта библа выдает ошибку, что не видит функцию useForm
@PurpleSchool
@PurpleSchool 9 ай бұрын
А компонент клиентский?
@likluklak
@likluklak Жыл бұрын
antd form
@PurpleSchool
@PurpleSchool Жыл бұрын
К сожалению мне меньше понравились и связаны с UI либой antd. С ней норм.
@СамирАбасов
@СамирАбасов Жыл бұрын
Складывается ошушение, что скоро не будет необходимости изучать нативный html и js. А надо будет учить библиотеки
@PurpleSchool
@PurpleSchool Жыл бұрын
Все библиотеки строятся на основах, которые понимать все равно нужно.
@aammssaamm
@aammssaamm 11 ай бұрын
А что там изучать? 😂
@gals4997
@gals4997 Жыл бұрын
Даже если не слышать вашу речь, по движению мышц лица можно понять, что у вас неверное звукоизвлечение речевого аппарата. При произношении растягиваете рот в стороны(как при улыбке с сжатыми губами), не раскрываете горловое кольцо и гласные проглатываете, сворачиваете в конце не только фразы, но даже слова, сложно слушать. Могли бы несколькими упражнениями исправить эту кашу.
@ПавловОлексій
@ПавловОлексій Жыл бұрын
Автор очень хорошо рассказывает как профессионал. Даже если он не всегда говорит, как профессиональный диктор, это не повод в такой форме делать замечание. А вот сказать спасибо за доступное изложение материала можно
@gals4997
@gals4997 Жыл бұрын
@@ПавловОлексій Это не замечание, а умного профессионала никакие формы не заденут, из всего извлечет пользу и разберется, что лучше сделать. Какое воздействие лучше для положительного результата никому неизвестно, вот следующие выступления и покажут. )
React 23: forwardRef
9:50
Школа web-программирования Constcode
Рет қаралды 9 М.
Apple peeling hack @scottsreality
00:37
_vector_
Рет қаралды 129 МЛН
А ВЫ ЛЮБИТЕ ШКОЛУ?? #shorts
00:20
Паша Осадчий
Рет қаралды 8 МЛН
From Small To Giant Pop Corn #katebrush #funny #shorts
00:17
Kate Brush
Рет қаралды 67 МЛН
#FxTraderLiquidity #FTLSystems ОДИН ИЗ ЛУЧШИХ МЕТОДОВ ТОРГОВЛИ ЛИКВИДНОСТИ НА ФОРЕКС
3:35
Fx Trader Liquidity Обучение Трейдингу на Форекс
Рет қаралды 17
React Hook Form - Complete Tutorial (with Zod)
28:22
Cosden Solutions
Рет қаралды 115 М.
Zod для валидации API и форм
20:19
Михаил Непомнящий
Рет қаралды 12 М.
Валидация форм с react-hook-form в React-приложениях
16:50
Михаил Непомнящий
Рет қаралды 70 М.
React Hook Form (+ Zod) - Complete Tutorial
31:21
ByteGrad
Рет қаралды 97 М.
Делаем форму на React. Все самые сложные фичи за час
1:05:55
ЖИзнь Разработчика
Рет қаралды 68 М.
React и Next js убивают фронтенд!
9:11
Миша Ларченко
Рет қаралды 50 М.
FORMIK - Создание React формы с валидацией
14:48
Дмитрий Герасимов - о разработке в сфере IT просто
Рет қаралды 13 М.
React Query за 10 минут! Быстрый курс
11:34
Archakov Blog
Рет қаралды 55 М.
Apple peeling hack @scottsreality
00:37
_vector_
Рет қаралды 129 МЛН