No video

Кастомные\самодельные хуки React JS. Валидация

В этом уроке мы сделаем пользовательские кастомные хуки для валидации и обработки инпутов на React js.
Мой курс "Продвинутый Frontend. В production на React" - ulbitv.ru/fron...
Первое видео про валидацию -
• Валидация форм на Reac...

Пікірлер: 89

  • @lekost13
    @lekost133 жыл бұрын

    Топ! Единственный канал по программированию, который я смотрю на обычный скорости х1 :) Быстро, разжёванно и без воды👍

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Ахах, про х1 сильно конечно, сам обычно в х2 смотрю все, спксибо, друг!)

  • @user-fi9tn1pr4m

    @user-fi9tn1pr4m

    3 жыл бұрын

    @@UlbiTV я тоже тебя в 1х смотрю)

  • @user-hr4my4xs4w

    @user-hr4my4xs4w

    3 жыл бұрын

    Иногда х0.5 приходится смотреть

  • @nicearthes6170

    @nicearthes6170

    2 жыл бұрын

    Жизненно), а ещё приходиться ставить на паузу постоянно

  • @aleksandrmatyka3118
    @aleksandrmatyka31183 жыл бұрын

    Отличный канал, не бросайте это дело

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спасибо друг, с вашей поддержкой, не брошу)

  • @-LKRN
    @-LKRN Жыл бұрын

    Как же ты круто объясняешь, никто с тобой даже рядом и не стоит

  • @constantin1693
    @constantin16933 жыл бұрын

    Топ, можно ещё margin top на input увеличить position relative, и для ошибки position absolute, чтобы не прыгала форма

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спасибо за совет:)

  • @user-ur7ry4ms5u
    @user-ur7ry4ms5u9 ай бұрын

    Даже спустя столько времени от даты выпуска лучшее объяснение и пример, спасибо, пробую улучшить)

  • @programming5944
    @programming59443 жыл бұрын

    Так рад что нашел твой канал, не представляешь

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Очень рад слышать, спасиб)

  • @Victor-il9gm
    @Victor-il9gm3 жыл бұрын

    спасибо тебе большой! очень годный контент. Не всё понял, конечно. Но с практикой пойму больше. ты лучший!

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спасибо огромное) самое главное практика, практика и еще раз практика)

  • @Sergey_Klimov
    @Sergey_Klimov Жыл бұрын

    Чем углубленнее и сложнее тема, тем меньше просмотров) Лайкос!

  • @frozeninside5004
    @frozeninside50043 жыл бұрын

    Соглашусь с комментами ниже, смотрю всегда на скорости х1, Спасибо !

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спасибо!

  • @ilyaprotsenko1023
    @ilyaprotsenko10232 жыл бұрын

    Спасибо большое! Ценная информация в доступном и самое главное в хорошо изложенном виде)

  • @skyfox9993
    @skyfox999311 ай бұрын

    Лучшие туториалы! Благодарочка🤝

  • @user-zk3bc1lf8k
    @user-zk3bc1lf8k3 жыл бұрын

    Как всегда супер, благодарю ♡ ♡ ♡ ♡ ♡ ♡

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спасибо за отзыв)

  • @vladyslavvin
    @vladyslavvin3 жыл бұрын

    спасибо за контент + можно еще так: onChange = {login.onChange} а в useValidation записывать все ошибки в обьект const [errors, setErrors] = useState({})

  • @s9219871110
    @s92198711102 жыл бұрын

    Плюс в копилку моих практических знаний! Спасибо Тимур!

  • @user-bl4te2kg8v
    @user-bl4te2kg8v3 жыл бұрын

    Это действительно круто! Большое спасибо

  • @anazkomult
    @anazkomult3 жыл бұрын

    Привет! Отличные уроки, большое спасибо! Исходники урока на гитхабе не лежат? Было бы гораздо удобнее изучать....

  • @dmitrykarpovich186
    @dmitrykarpovich1862 жыл бұрын

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

  • @sergsergey4251
    @sergsergey42513 жыл бұрын

    Спасибо, очень доходчиво, очень наглядно

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спасибо!

  • @toivokalev498
    @toivokalev4982 жыл бұрын

    Спасибо) Мир твоему дому!

  • @user-jf7qs7sc9q
    @user-jf7qs7sc9q3 жыл бұрын

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

  • @rovshen.public
    @rovshen.public3 жыл бұрын

    Спасибо, попробую сделать

  • @dmitriystoyanov933
    @dmitriystoyanov9333 жыл бұрын

    Ulbi, объясни кое-что, пожалуйста. В данном примере когда мы покидаем поле - выводится ошибка, но если написать короткий пароль и поле не покидать, нет оповещения что пароль не валидный.. Я пытаюсь эту валидацию использовать у себя в проекте, но хочется чтобы не покидая поле сразу вызвало варнинг что пароль короткий.. С другой стороны тут еще есть isDirty, на нее все завязано, ни туда ни сюда. Что-то не пойму как сделать.

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Лучше использовать formik для валидации, этот ролик снят в целях общего развития

  • @mikhailreznichenko8035
    @mikhailreznichenko80353 жыл бұрын

    ТоП!

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    спасибо!)

  • @user-yq5md8ej7l
    @user-yq5md8ej7l3 жыл бұрын

    Спасибо за материал. А зачем используется хук useEffect в валидаторе? Разве не будет каждый раз и так отрабатывать функция useValidation при рендеринге?

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спаси!) будет, но тут мы явно отслеживаем изменение value, и функция вызывается только в этом случае

  • @user-yq5md8ej7l

    @user-yq5md8ej7l

    3 жыл бұрын

    @@UlbiTV Спасибо. А тебя бы не затруднило поглядеть на код? делаю по твоему примеру но немного изменил, чтобы удобнее ошибки выводить. И у меня в бесконечный цикл возникает и всё. Зависимости в массив useEffect передал, они не изменяются, а бесконечный цикл возникает всё равно из за эффекта. Уже часов 5 сижу не могу понять... Был бы очень благодарен.

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    @@user-yq5md8ej7l Давай, присылай, гляну как минутка будет!)

  • @user-nw5br5jg9k

    @user-nw5br5jg9k

    2 жыл бұрын

    @@user-yq5md8ej7l привет, такая же проблема возникла, как решил?

  • @user-ju5sb3of7l
    @user-ju5sb3of7l3 жыл бұрын

    люблю!)

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Взаимно!))

  • @azamatsatybaldiev7577
    @azamatsatybaldiev75772 жыл бұрын

    Тимур спасибо что делишься знаниями!!! кто-нибудь решил как показывать ошибки пользователю не хардкодно? буду благодарен если кто скинет код , многим будет интересно)))

  • @pseudonim510

    @pseudonim510

    Жыл бұрын

    Тоже интересует

  • @sega21rus98
    @sega21rus983 жыл бұрын

    Как решить проблему с ререндерами в хуках? когда меняется значения в одном поле перерендеривается компонент, функции пересоздаются и вызывается куча useInput-ов опять

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Использовать useRef и переделывать хук для валидации)

  • @sega21rus98

    @sega21rus98

    3 жыл бұрын

    @@UlbiTV да я что-то копался, но решил в итоге не возиться и сделал через formik

  • @StarkeshBrose

    @StarkeshBrose

    Жыл бұрын

    @@sega21rus98 😂😂

  • @nikitauzakov
    @nikitauzakov3 жыл бұрын

    Привет, подумал над тем как сделать вывод ошибок в компоненте и пришел к выводу, что лучше будет если хук useValidation будет возвращать только одну ошибку, ведь компоненту который её будет выводить(презентационному) в принципе без разницы что-за ошибка там будет. Хотелось бы узнать твое мнение по этому поводу

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Привет!) Зависит от ситуации, с моим вариантом можно по разному обрабатывать ошибки и делать разные стили) Но в большинстве случаев подойдет и то, о чем ты сказал

  • @olegvi5183
    @olegvi51833 жыл бұрын

    спасибо, а почему ранее часть логики была сделана через редакс, если можно было все через хуки?

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Благодарю за отзыв, хуки не заменяют редакс, хуки - функционал, редакс - менеджер состояния, да и логики на редакс в этом плейлисте не было, это серия роликов именно про валидацию.

  • @olegvi5183

    @olegvi5183

    3 жыл бұрын

    @@UlbiTV Шикарно быстрый ответ. Спасибо. Я говорил прежде всего про проект файлохранилища, можно ли было все данные собирать исключительно через хуки (useReducer, useState и.т.д)? И есть ли выгода от использования react-redux прослойки по сравнению с хуками?

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    @@olegvi5183 Ну смотри, useReducer\useContext уже могут заменить редакс в небольших проектах вполне, useState это локальное состояние компонента, я рассказываю почему это не всегда хорошо в одном из последних роликов про редакс. А те хуки которые мы делали в ролике, они несут в себе исключительно функционал по валидации и никак с редаксом впринципе не связаны)

  • @Vlad-us9xt
    @Vlad-us9xt3 жыл бұрын

    top!!!

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    thx!)

  • @user-un7gi2tn5h
    @user-un7gi2tn5h3 жыл бұрын

    Топ!

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спасибо)

  • @nastasiya_pant
    @nastasiya_pant5 ай бұрын

    а как его использовать в других компонентах? у меня одна валидация формы на 8 страниц

  • @one_word_a_day
    @one_word_a_day2 жыл бұрын

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

  • @aipronator
    @aipronator3 жыл бұрын

    Есть ли смысл делать useValidation хуком? Или это для примера сделано? И можно просто описать функцию validation без реактовских хуков и принципиального отличия не будет.

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    принципы абсолютно разные есть, и подход может быть разный)

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    хуки по сути и есть обычные функции, только с некоторыми правилами

  • @sergienkoandrey3855
    @sergienkoandrey38552 жыл бұрын

    У меня InputValidate не работает от слова совсем. В чём пробелма не пойму, всё время возвращает false

  • @aniutaani9036

    @aniutaani9036

    2 жыл бұрын

    у меня таже проблема

  • @GrigoryGriko
    @GrigoryGriko Жыл бұрын

    Почему, когда я разделяю код на компоненты, смена кнопки отправки запроса на активную и неактивную перестает работать? У меня есть компоненты, ValidationForm - здесь код валидации, register, в нем компоненты AuthBottom - здеь кнопка, AuthForm - здесь форма. В AuthBottom я создаю объект из email и password, к которым приравниваю результат импортированной функции useInput

  • @soloveichk
    @soloveichk3 жыл бұрын

    Агонь! Очень полезное видео! Вопрос: Как завалидовать инпут с регуляркой только на числа? const regNumbers = /^[0-9]+$/ regNumbers.test(String(value).toLowerCase()) ? setOnlyNumbers(false) : setOnlyNumbers(true) Такой вариант не работает.

  • @Max-kr4ie

    @Max-kr4ie

    3 жыл бұрын

    //не работает с отрицательными const isNumber = (str) => { var pattern = /^\d+$/; return pattern.test(str); // returns a boolean } //работает с отрицательными const isUpdateNumber = (str) => { var pattern = /^[\+\-]?\d*\.?\d+(?:[Ee][\+\-]?\d+)?$/; return pattern.test(str); // returns a boolean }

  • @pseudonim510
    @pseudonim510 Жыл бұрын

    Ребята, нужно сделать чтобы при вводе даты, например 11/22, косая черта вводилась автоматически, куда можно засунуть этот алгоритм?

  • @natellaverde9260
    @natellaverde9260 Жыл бұрын

    спасибо! все четко

  • @NatashaYepanchina
    @NatashaYepanchina Жыл бұрын

    Как сделать в таком случае reset форме?

  • @ab7222274
    @ab72222742 жыл бұрын

    спасибо большое! отличные уроки. а как сбросить поля формы после отправки?

  • @NatashaYepanchina

    @NatashaYepanchina

    Жыл бұрын

    у вас получилось?

  • @JoKERIFreeStyleI

    @JoKERIFreeStyleI

    Жыл бұрын

    @@NatashaYepanchina форме надо .reset()

  • @hedinsss
    @hedinsss2 жыл бұрын

    У меня тут все таки пара уточнений зачем для задания булевых значений тернарный оператор по булевому? И !!никто не отменял для преобразования всего остального в будево

  • @vladpav9948
    @vladpav99482 жыл бұрын

    Thanks a lot !!!

  • @user-tg3bj1vu9i
    @user-tg3bj1vu9i Жыл бұрын

    Спасибо большое! Github - есть

  • @romanmed9035
    @romanmed9035 Жыл бұрын

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

  • @vitya.obolonsky
    @vitya.obolonsky7 ай бұрын

    useEffect 2й лишний

  • @barbatage5078
    @barbatage50783 жыл бұрын

    Атдушииииии

  • @UlbiTV

    @UlbiTV

    3 жыл бұрын

    Спаааасибо

  • @pseudonim510
    @pseudonim510 Жыл бұрын

    Пожалуйста подкиньте идею, как можно возвращать еще и текст ошибки?

  • @pandalove6795
    @pandalove67952 жыл бұрын

    Можно же вместо value.length < validations[validation] ? setMinLengthError(true) : setMinLengthError(false) написать setMinLengthError(value.length < validations[validation) Аналогично и с setEmpty(!value) Или это для читаемости так написано?

  • @daniilmitrofanov2986
    @daniilmitrofanov29863 жыл бұрын

    Не нужно городить такую регулярку для email. Хорошая регулярка для валидации email это .@.

  • @nelson6783
    @nelson67832 жыл бұрын

    НОЛЬ дизлайков, это уже топчик)

  • @nelson6783
    @nelson67832 жыл бұрын

    я бы задонатил за такие ролики, но пока не зарабатываю деньги для Доната

  • @talanovmax
    @talanovmax2 жыл бұрын

    Огромное спасибо, за старания и вклад!

Келесі