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

Поделиться
HTML-код
  • Опубликовано: 25 ноя 2024

Комментарии • 78

  • @PurpleSchool
    @PurpleSchool  Год назад +1

    🔗 Ссылки:
    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 Год назад +5

    как здорово что есть такие авторы!

  • @zeevnadiv8778
    @zeevnadiv8778 4 месяца назад +1

    спасибо тебе, хороший человек!!! Большое дело делаешь, несешь свет в массы ;-)

  • @serikov4430
    @serikov4430 Год назад +5

    Было бы здорово ещё залезть внутрь и разобрать как самому можно сделать мини-библиотеку для работы на проекте, для того чтобы лучше понимать как это работает.
    Можно прям отдельным курсом по работе с формами.

    • @PurpleSchool
      @PurpleSchool  Год назад +3

      Буду иметь ввиду 👍

  • @MegaMaxxon
    @MegaMaxxon Год назад +4

    Formik, yup. Интересно было бы сравнение услышать от автора.

    • @PurpleSchool
      @PurpleSchool  Год назад +2

      👍

    • @СамирАбасов
      @СамирАбасов Год назад

      Стоит ли сравнивать то что обновилось месяц назад и то что обновилось 2 года назад.

    • @CJIu3eHb
      @CJIu3eHb Год назад +2

      ​@@СамирАбасов Да и нужен ли yup, когда есть zod.

  • @tezis.digital
    @tezis.digital Год назад +1

    О, очень полезный контент! Спасибо!

  • @noname-nh8mx
    @noname-nh8mx Год назад +11

    Не знаю в каких сложных случаях вы пользовались 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 Год назад +1

      Может вам лучше отправить этот лонгрид на гитхаб разработчиков? Хороший фидбек получился

    • @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, возможно вопрос с перерисовкой при изменении любого поля в этом

  • @Kotovar
    @Kotovar 3 месяца назад

    Как всегда - огромное спасибо (:

    • @PurpleSchool
      @PurpleSchool  3 месяца назад

      @@Kotovar пожалуйста!

  • @nk_77777
    @nk_77777 4 месяца назад

    Полезный контент, спасибо!)

  • @ИванГорохов-ф8ж
    @ИванГорохов-ф8ж 11 месяцев назад +2

    брат, на будущее Vite (French word for "quick", pronounced /vit/ , like "veet")

  • @kimanowka
    @kimanowka Год назад +10

    Полно видео для новичков. Почему бы не сделать пару материал для middle , по той же самой архитектуре, какие-то интересные вещи в библиотеках. Такого контента вообще нет в русскоязычном ютьюбе

    • @PurpleSchool
      @PurpleSchool  Год назад

      Буду иметь ввиду.

    • @Запискисамоучки
      @Запискисамоучки 7 месяцев назад

      и не говорите. Вроде и норм обзор, а вот сижу и приходится сразу лезть в доки. Тупо примера работы с сервером нет, ведь даже ошибку авторизации нужно отображать после попытки логина

  • @wev_dev_pro
    @wev_dev_pro Год назад +1

    Спасибо за видео

  • @ruslan3040
    @ruslan3040 Год назад +1

    спасибо !

  • @deGGenerate
    @deGGenerate Год назад +1

    Лайк неглядя как всегда

  • @dinarsharipov5022
    @dinarsharipov5022 Год назад +1

    Чисто для продвижения

  • @serikov4430
    @serikov4430 Год назад +1

    Антон, было бы здорово посмотреть ваш новый конфиг для neovim. Шрифт, тема, добавленные плагины. Можно сделать отдельный пост и прикладывать линк к нему.

    • @PurpleSchool
      @PurpleSchool  Год назад +1

      Будет в следующем видео

  • @TheKykp
    @TheKykp Год назад

    Добрый день, Антон! А Вы можете показать как вы используете react hook form в реальных проектах, когда вам нужно сделать компонент, который будет переиспользуемый например поле input, вы создаете отдельный юай компонент, который оборачиваете Controller или как вы обычно делает? Спасибо!

    • @PurpleSchool
      @PurpleSchool  Год назад

      Controller добавляется в нужно место, сами UI компоненты его не содержать, так как не всегда могут использоваться.

    • @TheKykp
      @TheKykp Год назад

      ​@@PurpleSchool спасибо за Ваш ответ, а Вы не могли бы если у вас будет время, записать на эту тему видео ролик, или подсказать в каком курсе вы разбираете эти примеры, дело в том, что я сделал как вы говорите, но мне потребовалось отслеживать введен ли в инпут текст что бы изменить бекграунд, и правильно было бы сделать такое поведение внутри самого компонента инпута, что бы он видел что он полный и менял фон, однако при использовании юз хук форм, мы отдаем управление инпутом, и теперь что бы отслеживать его наполнение нужно юзать watch, сразу возникает мысль в юз эффект, добавить отслеживание изменений поля, и если длина >= 1 то меняем фон, например передавая пропс в инпут. Но как то это кажется слишком сложным. И еще у меня есть одна проблема с этой библиотекой, когда устанавливаешь ошибку кастомную, например при ответе на запрос с бека, если юзер есть - то все ок, если юзера нет, setError('user") и текст ошибки, так вот эта ошибка, при клике на сабмит формы, почему то стирается, и следующий клик на форму уже отрисовывает компонент, в котором объект errors - пустой. Как вот такие моменты контролить? Спасибо ^_^

    • @кирилларистархов-ь7в
      @кирилларистархов-ь7в Год назад

      @@TheKykp мб в состояние добавлять ошибку, и потом оттуда ее доставать и использовать в форме?(Только начал знакомиться с формами в реакт, не бейте)

  • @pizza-shlyapa
    @pizza-shlyapa Год назад +1

    Круто ! Только отображение клавиш пропало в второй половине видео.

    • @PurpleSchool
      @PurpleSchool  Год назад

      Да, на монтаже уже заметил

  • @СергейКорнев-э5у

    В ангуляре крутая очень валидация

  • @Sa1ahaddin
    @Sa1ahaddin 5 месяцев назад

    Спасибо за видео!
    А как ты сдела вывод ошибок в реальном времени?

    • @PurpleSchool
      @PurpleSchool  5 месяцев назад

      Это Nullls, но сейчас он не поддерживается, но есть замена none-ls

  • @ЕвгенийЯкунин-ф2д

    уже давно и с удовольствием пользуюсь библиотекой Mantine. Помимо отличного дизайна, у них есть много прекрасных хуков, в том числе и для форм. Никогда не пользовались Mantine, Антон?

    • @PurpleSchool
      @PurpleSchool  Год назад

      Нет, но будет интересно глянуть

    • @parmetra
      @parmetra Год назад

      То есть уже встроенная валидация даже?

  • @dmaberlin
    @dmaberlin Год назад

    а что чаще юзают Hook Form или Formik допустим в связке с Tailwind и чисто CSS ? или надо практиковать и то и то

    • @PurpleSchool
      @PurpleSchool  Год назад

      Мне кажется зависит от команды проекта и то и то в целом подходит хорошо для работы с формами

  • @ПалочкаВыручалочка-ц2к

    Обьясните кому не трудно, я пробовал делать обработку формы по простому без использования реакт хук форм, правильно делать как на видео сделано?

    • @PurpleSchool
      @PurpleSchool  Год назад

      Зависит от сложности формы и желания тащить библиотеки.

  • @kostasancez2358
    @kostasancez2358 Год назад

    Yup

  • @vvks9901
    @vvks9901 6 месяцев назад +1

    я вообще не врубаюсь как форма работает

  • @siparat842
    @siparat842 Год назад

    Что за тема и шрифт?

    • @PurpleSchool
      @PurpleSchool  Год назад +1

      One dark и шрифт Jerbrains Mono

  • @ПалочкаВыручалочка-ц2к

    что за редактор кода?

    • @PurpleSchool
      @PurpleSchool  Год назад

      ruclips.net/video/4PzSNN45tcA/видео.html

  • @sieghardt8191
    @sieghardt8191 11 месяцев назад

    В новом NextJS использовать не получится уже. В 14 версии эта библа выдает ошибку, что не видит функцию useForm

    • @PurpleSchool
      @PurpleSchool  11 месяцев назад

      А компонент клиентский?

  • @arinqwerty
    @arinqwerty 7 месяцев назад +1

    спасибо🤍

  • @vitmih380
    @vitmih380 Год назад +3

    Чувак, громкость клавиш может тебе и ласкает слух. Но для видосов желательно использовать тихую клаву.

  • @СамирАбасов
    @СамирАбасов Год назад +1

    Складывается ошушение, что скоро не будет необходимости изучать нативный html и js. А надо будет учить библиотеки

    • @PurpleSchool
      @PurpleSchool  Год назад

      Все библиотеки строятся на основах, которые понимать все равно нужно.

    • @aammssaamm
      @aammssaamm Год назад

      А что там изучать? 😂

  • @likluklak
    @likluklak Год назад

    antd form

    • @PurpleSchool
      @PurpleSchool  Год назад +1

      К сожалению мне меньше понравились и связаны с UI либой antd. С ней норм.

  • @gals4997
    @gals4997 Год назад

    Даже если не слышать вашу речь, по движению мышц лица можно понять, что у вас неверное звукоизвлечение речевого аппарата. При произношении растягиваете рот в стороны(как при улыбке с сжатыми губами), не раскрываете горловое кольцо и гласные проглатываете, сворачиваете в конце не только фразы, но даже слова, сложно слушать. Могли бы несколькими упражнениями исправить эту кашу.

    • @ПавловОлексій
      @ПавловОлексій Год назад +2

      Автор очень хорошо рассказывает как профессионал. Даже если он не всегда говорит, как профессиональный диктор, это не повод в такой форме делать замечание. А вот сказать спасибо за доступное изложение материала можно

    • @gals4997
      @gals4997 Год назад

      @@ПавловОлексій Это не замечание, а умного профессионала никакие формы не заденут, из всего извлечет пользу и разберется, что лучше сделать. Какое воздействие лучше для положительного результата никому неизвестно, вот следующие выступления и покажут. )