Делаем форму на React. Все самые сложные фичи за час

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ธ.ค. 2024
  • Код формы: github.com/sat...

ความคิดเห็น • 119

  • @VorobyevAlexander
    @VorobyevAlexander 3 ปีที่แล้ว +68

    Важное примечание к видео! На видео используется react-hook-form вероятно 6-ой версии. В 7ой версии произошли важные изменения. Чтобы код работал необходимо внести изменения.
    У инпутов: ref={rregister} заменить на {...register('fiieldName')}
    при вызове useForm
    const {register, handleSubmit, errors} = useForm({mode: 'onBlur'});
    заменить на
    const {register, handleSubmit, formState: {errors}} = useForm({mode: 'onBlur'});

    • @arturseu
      @arturseu 3 ปีที่แล้ว +2

      Спасибо бро

  • @Datomezz
    @Datomezz 3 ปีที่แล้ว +90

    Не знал что Тэон Грейджой на Реакте пишет 😂

    • @liliianigthfury
      @liliianigthfury 3 ปีที่แล้ว

      Ахахахах ))))

    • @trimmtrabb7629
      @trimmtrabb7629 2 ปีที่แล้ว +4

      Пошутил, а человек больше видео не выпускает)

    • @Datomezz
      @Datomezz 2 ปีที่แล้ว +5

      @@trimmtrabb7629 пздц, знал бы не писал :d

  • @strel9
    @strel9 2 ปีที่แล้ว +8

    у кого не работают роуты, react-router-dom обновился и надо заменить Switch на Routes, еще component заменить на element и в фигурных скобках в элементе название роута оборачивать < />
    вот :
    In react-router-dom v6, "Switch" is replaced by routes "Routes". You need to update the import from
    import { Switch, Route } from "react-router-dom";
    to
    import { Routes ,Route } from 'react-router-dom';
    You also need to update the Route declaration from
    to

  • @denisu9286
    @denisu9286 8 หลายเดือนก่อน

    классное объяснение про сложные вопросы React Hook Form. Спасибо!!!

  • @МаксимИванов-ф8р
    @МаксимИванов-ф8р 3 ปีที่แล้ว +2

    Ну красавчик, объяснение на высшем уровне. У тебя явно есть способности к обучению.

  • @ibragimbazarbaev5467
    @ibragimbazarbaev5467 3 ปีที่แล้ว +18

    У кого ошибка "TypeError: path.split is not a function in react", перепишите ref={register} на {...register('firstName')}.
    В новой версии библиотеки произошли изменения.

  • @Nikitosss91
    @Nikitosss91 3 ปีที่แล้ว +22

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

  • @АлексейАлексеев-ю3ъ
    @АлексейАлексеев-ю3ъ 4 ปีที่แล้ว +5

    Очень крутое видео. Побольше бы таких.

  • @AE-bx7nm
    @AE-bx7nm 4 ปีที่แล้ว +9

    Спасибо за твои видео, действительно качественный контент, подходит не только для начинающих, продолжай в том же духе!)

  • @АнтонАнтуськов-е7о
    @АнтонАнтуськов-е7о ปีที่แล้ว

    Большое спасибо! Офигенный видос!

  • @ТаяКузнецова-г5ь
    @ТаяКузнецова-г5ь 2 ปีที่แล้ว

    Спасибо за видео. На просторах youtube часто не хватает материала для уровня чуть выше базового, а здесь освещены и непростые моменты с формами

  • @sergei_sergeevu4
    @sergei_sergeevu4 4 ปีที่แล้ว +32

    Спасибо, вам большое за ваш труд.
    Было бы круто, если бы вы продолжили снимать видео на русском)

  • @darafrontend
    @darafrontend 2 ปีที่แล้ว

    Спасибо за это видео! Профессионально и информативно. Успехов Вам!

  • @incredible986
    @incredible986 4 ปีที่แล้ว +1

    Очень классный материал, спасибо большое Максим)!

  • @olegsoul6016
    @olegsoul6016 3 ปีที่แล้ว +1

    Очень хороший туториал для построения формы) Единственный момент, когда я начинал смотреть, то почему-то подумал, что тут нужны только знания азов React и парочки базовых Хуков, но... как оказалось, предполагалось уверенное знание React, включая Реакт Роутер и знание библиотеки стилей и ее базового синтаксиса... В итоге далеко не все понял, но видео, очевидно, не было рассчитано на совсем начинающего React разработчика, так что наверное проблема понимания - это уже моя проблема) И да, насколько я понимаю, автор видео очень занят, ибо не отвечает на комментарии... В любом случае, спасибо за контент и буду рад другим урокам и гайдам по React.

    • @Kirdaro
      @Kirdaro 3 ปีที่แล้ว

      Да на самом деле час потратить на документацию и все. Там много хороших примеров и все не так сложно как кажется.

  • @Кофей-й8х
    @Кофей-й8х 3 ปีที่แล้ว +8

    Для тех у кого ошибка Path.split is not a function нужно поменять ref={register} на {...register('firstname')}

    • @sergeysamius1128
      @sergeysamius1128 3 ปีที่แล้ว +1

      Спасибо, добрый человек.

  • @tot-medved
    @tot-medved 4 ปีที่แล้ว +1

    Тоже думаю перейти на реакт хук форм. Спасибо за видео.

  • @olgasinenkova478
    @olgasinenkova478 2 ปีที่แล้ว +1

    Привет всем из 2022! Мучалась с forwardRef и register, не работала валидация по блюру (менно с компонентов mui ). Перешла на компонент , описан в документации react hook form. Все работает!

    • @ПолинаШило-й5г
      @ПолинаШило-й5г 2 ปีที่แล้ว

      Olga, а makeStyles у вас работает?

    • @olgasinenkova478
      @olgasinenkova478 2 ปีที่แล้ว

      П.С. Для валидации номера телефона тоже лучше использовать проп rules у контроллера и аналогичную функцию

    • @ff1cer___hernandez
      @ff1cer___hernandez 10 หลายเดือนก่อน

      Подскажите пожалуйста, какую версию node js вы использовали?

    • @olgasinenkova478
      @olgasinenkova478 9 หลายเดือนก่อน

      @@ff1cer___hernandez >=6.9.0

  • @sombert1054
    @sombert1054 3 ปีที่แล้ว

    Огромное спасибо за ваше видео, оно мне очень помогло! Лайк и подписка обязательно.

  • @ОлегПетров-п4у
    @ОлегПетров-п4у 3 ปีที่แล้ว

    Спасибо за качественный контент! Лайк, подписка!

  • @YuriiKratser
    @YuriiKratser 3 ปีที่แล้ว +18

    Уважаемая публика, сейчас нужно yupResolver доставать из @hookform/resolvers/yup, а ошибки получать из formState:{ errors }

  • @thedimasss
    @thedimasss 3 ปีที่แล้ว

    Отличный пример работы! Спасибо

  • @evgeniybudaev1690
    @evgeniybudaev1690 3 ปีที่แล้ว

    Классное видео! Спасибо Вам за труд!

  • @maxim7603
    @maxim7603 3 ปีที่แล้ว

    Спасибо, классное видео, про тестирование было бы интересно

  • @michaeldevichenskiy4588
    @michaeldevichenskiy4588 3 ปีที่แล้ว

    Привет! Только что подписался на вас . У вас отличный английский .

  • @mk3mk3mk
    @mk3mk3mk 2 ปีที่แล้ว +1

    спасибо! Интересует вопрос, почему в некоторых случаях пишут файлы компонентов с расширением jsx, а в других случаях с расширением js. Ведь и там и там мы используем jsx. Что тогда меняет расширение?

  • @АлександрБулах-и6с
    @АлександрБулах-и6с 3 ปีที่แล้ว +9

    Step3 не выводит список файлов из Dropzone! Приложение падает. Исправляем: в файле FileInput компонент Controller -> render={({onChange, onBlur, value}) поменять на render={({field: {onChange, onBlur, value} }). А чтобы исправить warning добавьте в Controller значение shouldUnregister={true}

    • @olenakunina1
      @olenakunina1 ปีที่แล้ว

      спасибо - это капец - у всех остальных что ли и так получилось - имею в виду тех кто уже пытался это воплотить на более поздних версиях реакта

    • @ff1cer___hernandez
      @ff1cer___hernandez 10 หลายเดือนก่อน

      @@olenakunina1на 20 версии node js, вообще не запускается репозиторий с его гита

  • @Goddamn_Right
    @Goddamn_Right 8 หลายเดือนก่อน

    1:04:59 "И вот тут интересно. Если мы сейчас оставим телефон введенным... снимем галочку..." то на 1:05:13 увидим в таблице введенный ранее номер, хотя галочка снята. Надо очищать стейт с номером телефона при снятии галочки

  • @deadwalkru
    @deadwalkru 3 ปีที่แล้ว

    Годно, ставлю лукас

  • @suslikest3708
    @suslikest3708 4 ปีที่แล้ว +1

    Даа мощная форма, у меня как-то в такой на каком-то шаге была динамическая таблица с инпутами и крадами 😅

  • @mikhailrypta4779
    @mikhailrypta4779 3 ปีที่แล้ว +3

    Если у кого то не работает 3 шаг с файлами - замените строку render={({ onChange, onBlur, value }) => () на render={({ field: { onChange, onBlur, value } }) => ()

    • @rebelliondreamer6261
      @rebelliondreamer6261 3 ปีที่แล้ว

      Я кстати так и сделал, но проблема в другом немного, он у меня почему-то вообще не выводит Finder (Проводник) при нажатии по карточке, для выбора файла

    • @trionixchannel2435
      @trionixchannel2435 2 ปีที่แล้ว +1

      спасибо🤜

  • @armenchik_dzhan
    @armenchik_dzhan 3 ปีที่แล้ว

    thank you super useful lesson, do more of these!

  • @dmitryshilov6413
    @dmitryshilov6413 2 ปีที่แล้ว +2

    Тема из укрока + разные гаммы:
    1. Material theme ocean high contrast
    2. Community material theme ocean high contrast (чуть гамма подкручена)
    3. Оcean high contrast (отдельная тема, не из пака material, для любителей тёмного)
    gl =)

  • @adamsden
    @adamsden 4 ปีที่แล้ว

    Thank you so much for the lesson.

  • @dmitriystoyanov933
    @dmitriystoyanov933 4 ปีที่แล้ว +2

    Уже немало времени занимаюсь изучением реакта, но это понимается очень тяжело. Очень много инструментов задействовано. А в целом хороший материал.

  • @Elator11777
    @Elator11777 4 ปีที่แล้ว +2

    А репо будет на гитхабе?

  • @oleksandrluchytskyi6867
    @oleksandrluchytskyi6867 ปีที่แล้ว

    а useCallback() там не нужні?

  • @sour5786
    @sour5786 2 ปีที่แล้ว +2

    Пиздец один из самых полезных роликов по реакт хук форм, жаль автор забросил канал. Да по всему фронту бы такие уроки сделать)) и курсы не нужны, автору реально респект, давай возвращайся

    • @Hytpu9
      @Hytpu9 ปีที่แล้ว +1

      у него другой канал, вбей в поиск - Maksim Ivanov

  • @strongcat844
    @strongcat844 3 ปีที่แล้ว

    2 раз делаю подписку и на кого то спасибо за видео

  • @АлександрОсипов-ъ7н
    @АлександрОсипов-ъ7н 2 ปีที่แล้ว

    Здравствуйте!
    Вопрос по работе с инпутами
    ---Общее положение дел
    У меня есть коллекционные карточки
    Карточка с одним изображением может издаваться на разных языках
    Ранние выпуски карточек издавались на меньшем количестве языков
    ---Что хочу сделать
    Хочу сделать учет карточек не только по конкретному изображению, но ещё и по языкам
    ---Как я представляю хранение карточек
    ИД - итерируемое
    ИД_выпуска - Номер выпуска, к которому принадлежит карточка
    Название_карточки - скажем так... наименование того, что изображено
    Языки - текст, состоящий из "0" и "1", где каждому языку соответствует конкретная позиция. "1" означает, что есть карточка с этим языком
    ---Как я это вижу на странице
    На странице отображается инпуты по количеству "1" в поле "Языки", куда я записываю количество карточек. Нажимаю на кнопку сохранить. Данные сохраняются.
    ---Вопрос
    Как эти импуты описать и как к ним обращаться для получения данных?

  • @ПавелСедой-р5п
    @ПавелСедой-р5п 4 ปีที่แล้ว

    Очень круто. Будут ещё видео?)

  • @happyhomo4423
    @happyhomo4423 3 ปีที่แล้ว

    Как добавить емодзи единорога и коробки?

  • @alexshostka3229
    @alexshostka3229 4 ปีที่แล้ว

    Круто. Спасибо за инфо. Подскажи, что за тема на VSCode? Такую же хочу поставить

  • @chikada3301
    @chikada3301 4 ปีที่แล้ว

    Было бы неплохо, если бы вы записали пример формы, но, которая сохраняется в json.

  • @adletibraimov2967
    @adletibraimov2967 4 ปีที่แล้ว

    Бро, каким расширением пользуешься для форматирования?

  • @snd5543
    @snd5543 3 ปีที่แล้ว +2

    селектов не хватает)

  • @iCars-ua
    @iCars-ua 4 ปีที่แล้ว

    Привет 🙋‍♂️
    А подскажи плиз extension который autocompleting css ты используешь vscode :)

  • @memphis2234
    @memphis2234 2 ปีที่แล้ว

    Подскажите какой плагин для форматирования используется либо какой язык выбран в форматировании

    • @strel9
      @strel9 2 ปีที่แล้ว

      prettier скорее всего

  • @viktok555
    @viktok555 4 ปีที่แล้ว

    Здравствуйте, Максим🙌 Можно связаться с Вами в соцсетях? Спасибо 👍

  • @voiceofzimbabwe7174
    @voiceofzimbabwe7174 4 ปีที่แล้ว

    Привет.
    Как сейчас ай ти сфера в Швеции?
    Сколько в среднем может получить тестировщик в год?

  • @Котвсапогах-с4д
    @Котвсапогах-с4д 3 ปีที่แล้ว

    Что у тебя за темя в vs code

  • @YuriiKratser
    @YuriiKratser 3 ปีที่แล้ว +2

    Уважаемый автор видео, обнови его пожалуйста. Твой код устарел безнадежно. Для кастомизации сейчас нужно использовать Controller.

  • @МихайлоАндрейців-з9у
    @МихайлоАндрейців-з9у 4 ปีที่แล้ว

    Привет!спасибо за видео
    Реакт форм хук, revalidate mode onChange, при ошибке когда вводишь, текст не отображает, будто зависает, и в стейт не сохраняется

  • @KalinachenkoTV
    @KalinachenkoTV 4 ปีที่แล้ว

    Уже разобрался, спасибо за часть с файлами и драг енд дроп, жаль что ссылку забыл добавить. Кст почему на своем англ канале так часто видео и с ссылками на гитхаб а тут так???? Вроде как руская аудитория тоже понемножку набирается)

  • @gigor1433
    @gigor1433 2 ปีที่แล้ว

    Почему бы не использовать контекст форм и не сделать самостоятельные Input'ы, которые бы всё необходимое брали из контекста? Не надо будет в каждый элемент передавать 100500 пропсов

  • @VorobyevAlexander
    @VorobyevAlexander 3 ปีที่แล้ว +1

    Ни как не могу победить чекбокс есть/нет телефон для актуальной версии react-hook-form как исправить код в видео?

    • @mnsr_il4763
      @mnsr_il4763 3 ปีที่แล้ว +1

      В FormControlLabel ваш control должен выглядеть следующим образом:
      _control={}_

  • @evloev4821
    @evloev4821 3 ปีที่แล้ว

    изначально на показе страницы, 1:14 вроде маска +1 вводилась автоматом, только ради этого смотрел видео на перемотке, а в итоге про маску ни слово

  • @ievgeniibielkin
    @ievgeniibielkin 3 ปีที่แล้ว

    Спасибо! Видео было полезным.
    Интересно как можно передать состояние формы ( formState из useForm ) за пределы формы. Например, если нужно дизейблить кнопки в модальном окне или показывать индикатор выполнения, когда форма сабмитится

  • @danielkhachaturian
    @danielkhachaturian 3 ปีที่แล้ว

    Какая тема у тебя?

  • @lirrr6555
    @lirrr6555 3 ปีที่แล้ว

    Спасибо за видео. Заметил, что у вас при onblur событии, даже если поле не начинали заполнять, появляется ошибка. Подскажите, как можно в react-hook-form отключить onblur валидацию пустых полей до попытки submit?

    • @andrewS85
      @andrewS85 2 ปีที่แล้ว +1

      Наверное уже не актуально) напишу для тех кто будет читать - можно использовать onChange

  • @vlatypov
    @vlatypov 4 ปีที่แล้ว

    В компоненте PrimaryButton ошибочка c rest параметрами -> надо вот так export const PrimaryButton = ({children, ...props}) =>{}

  • @saveliy.d_13
    @saveliy.d_13 ปีที่แล้ว

    За 2 года произошло столько изменений, что большая часть того, что объясняется в видео, уже не работает. Даже не буду расписывать, слишком длинно получится. Так что совсем не для новичков, потому что надо хорошо понимать, что вообще происходит, уметь разбираться в документации. По сути просто идея, которую наполовину надо реализовать самому. Если хотите, чтобы код работал, найдите другое видео)

    • @ayaznamazov8328
      @ayaznamazov8328 ปีที่แล้ว

      можешь скинуть видео

  • @kulivers1998
    @kulivers1998 3 ปีที่แล้ว

    Спасибо!

  • @artemgum4517
    @artemgum4517 4 ปีที่แล้ว

    Интересно получилось) Жаль нет репозитория, с сервером поиграться.

  • @mr.younger
    @mr.younger 4 ปีที่แล้ว +5

    Очень годный туториал, но есть парочку моментов, которые, было бы вообще здорово, если вы рассмотрите как развитие данного туториала. Вторая, более короткая серия так скажем.
    1. Зачем было добавлять в проект пакет "material-ui" который deprecated и уже минимум 2 года не поддерживается? Тем более что в проекте он задействован не был.
    2. Поработать со страницей result, выводя в таблице не field name, а более осмысленный title для каждой строки.
    3. Недоработка с телефоном и флагом показывающим его.
    3.1. Отображение статуса hasPhone на странице result? Если и отображать, то только случай false, когда телефон не был введён, и более осмысленно чем false.
    3.2. Введя телефон, затем, заполняя форму по второму кругу, отключить если флаг hasPhone, то в итоговой форме телефон всё равно отобразиться.
    4. Возможность перезагрузить страницу на любом этапе из формы. Если этап будет отличен от первого, то это почти 100% необходимость делать start over чтобы заполнить предыдущие шаги. Или начинать с первого этапа, или хранить промежуточное состояние в localStorage.
    Не считая первого пункта, кейсы то реальные, и недопустимы в production приложении.
    В остальном шикарно.

    • @Elator11777
      @Elator11777 4 ปีที่แล้ว

      material-ui depricated?? Откуда такая инфа? Как не использовали, если все текстинпуты, иконки оттуда взяты были?

    • @mr.younger
      @mr.younger 4 ปีที่แล้ว +2

      ​@@Elator11777 специально в кавычки название пакета взял.
      www.npmjs.com/package/material-ui вот. Красным по розовому написано.
      2:52 вот здесь он добавляется в проект. И именно этот пакет не был использован. Про @material-ui/core я ни слова не сказал :)

    • @Elator11777
      @Elator11777 4 ปีที่แล้ว

      @@mr.younger Спасибо. Не знал.

    • @azimabdullayev9832
      @azimabdullayev9832 3 ปีที่แล้ว

      Согласен, что в production не допустимы. Но тут в production никто заливать не собирался, это ведь туториал, причем очень хороший. твои доработки это лишь дело техники.

  • @AlexSizovRun
    @AlexSizovRun 3 ปีที่แล้ว +5

    Чел ну вернись, правда

    • @AlexSizovRun
      @AlexSizovRun 3 ปีที่แล้ว +1

      Не ну ты вернись

  • @v.demchenko
    @v.demchenko 2 ปีที่แล้ว +1

    Устрели библиотеки. Нужно все перебирать, переустанавливать.

  • @tetianashevchuk8114
    @tetianashevchuk8114 ปีที่แล้ว +1

    У меня вообще не работает чекбокс и контролер формы. Есть кто с 2023?

  • @b-ars07
    @b-ars07 4 ปีที่แล้ว

    Максим, привет! А можно ссылочку на репозиторий с сервером?

  • @ОксанаГаращенко-д5р
    @ОксанаГаращенко-д5р 2 ปีที่แล้ว

    с тайпскриптом заняло бы 2 часа)

  • @МаксимИванов-ф8р
    @МаксимИванов-ф8р 3 ปีที่แล้ว

    Зачем ты меня вводишь)

  • @lordunitaz
    @lordunitaz 3 ปีที่แล้ว

    FileInput очень сложный для понимания. Такие макароны....

  • @ВячеславСаврацкий
    @ВячеславСаврацкий 3 ปีที่แล้ว

    по факту, если разобраться, в создании отдельных компонентов по типу (Form, Input и тп) только ради стилей нету необходимости. просто используйте styled-components или подобные подходы, так мы не перегружаем систему "глупыми" компонентами, а еще код пишется быстрее и чище. имхо

  • @Александрндреевич
    @Александрндреевич 3 ปีที่แล้ว

    26:50 /[a-z]/i/ Вроде так можно

  • @Лемми-ц8ш
    @Лемми-ц8ш ปีที่แล้ว

    Кабину проще

  • @apexnuts9785
    @apexnuts9785 3 ปีที่แล้ว

    Очень много лишних библиотек, для новичков ничего не понятно

  • @АлександрЛитвинов-в1и
    @АлександрЛитвинов-в1и ปีที่แล้ว +1

    ПОЛ ВИДОСА НЕ ПО ТЕМЕ БЛЯТЬ И ТАЙМКОДОВ ДАЖЕ НЕТ - ЖИРНЫЙ ДИЗЛАЙК!!!

    • @НікітаКорчемний-г4ч
      @НікітаКорчемний-г4ч 8 หลายเดือนก่อน

      видео 2020 года если что, автор давно забыл про канал, а в то время таймкодов даже не было

  • @ammoney159
    @ammoney159 3 ปีที่แล้ว +1

    Самый плохой курс, который я когда нибудь видел. Если сами не знаете, почему снимать курсы. Дизлайк.