169 похожих чатов

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

Делаю асинхронную валидацию поля через .test и она вызывается при изменении любого из полей формы (что, в принципе, задокументировано и ожидаемо), но с точки зрения UX, производительности и элеметарной логики быть такого не должно. Какие есть варианты вызывать test только при изменении определенных полей?

Сама задача заключается в том, что я валидирую код подтверждения почты с помощью запроса на сервер. Нужно триггерить эту асинхронную валидацию только при изменении почты или кода

В issue либы эта проблема обсуждается и там приводилось куча костылей, связанных с отказом от валидационной схемы в принципе и использованием кастомных валидационных функций, но мне интересен один из двух путей:

1) хорошее встроенное решение без костылей
2) отказ от yup в пользу другой более хорошей либы, если есть какие-нибудь варианты

18 ответов

15 просмотров

Асинхронная валидация О_о ??? Это как? (сарказм) Сделай для начала лексический анализ фразы "асинхронная валидация" и всё встанет на свои места.

а вообще бизнес логика в валидации не должна быть как по мне

Veli
и что не так?)

Просто говоря: валидация это cb. А как ты вызываешь cb это уже другое.

Veli- Автор вопроса
Илюша 🎂
а вообще бизнес логика в валидации не должна быть ...

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

Veli- Автор вопроса
Veli
ладно, держи в курсе

напиши тесты, все поймешь

херня, надо делать проверку при отправке, т. к. твой вариант тупо брутфорсить можно ты бы ещё пароль таким же способом валидировал) ну и смысл от кнопки "проверить код", если он итак при вводе проверяется?

Veli- Автор вопроса
Илюша 🎂
херня, надо делать проверку при отправке, т. к. тв...

боже, какие же вы тут все умненькие и любите отвечать на то, что вас не спрашивали ты вообще понимаешь, что такое код проверки мейла и зачем его проверяют?) Это исключительно фича для клиента, чтобы он случайно не ввел левый мейл и ему на левый мейл не зарегистрировало аккаунт. Иди и брутфорсь, если хочешь, что тебе это даст? намного быстрее письмо проверить, чем брутить комбинацию из 5 цифр хорошо, допустим, я сделаю при самбите, на самбите ее брутфорсить нельзя будет? где ты увидел кнопку «проверить код» вообще? хватит надумывать себе что-то и отвечать на это, умоляю, ответьте на конкретный вопрос или не отвечайте вообще

Veli
боже, какие же вы тут все умненькие и любите отвеч...

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

Veli- Автор вопроса
Илюша 🎂
на сабмите можно будет сделать попытки ввода хотя ...

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

Veli
а так нельзя будет сделать? Валидация происходит т...

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

Veli- Автор вопроса
Илюша 🎂
а если человек опечатался на первой цифре? ну и п...

если он опечатался на первой цифре, он точно так же нажмет сабмит и только потом об этом узнает… Ровно такая же ситуация. Можно дать те же 10 попыток какие-нибудь + там стоит дебаунс + безопасность тут не нужна отправить код - это отправить код проверки на почту, чтобы юзер его там получил и ввел в поле. Возможно, эту кнопку надо перенести к полю эмейл, а не к полю код, либо разделить на степы, но это не ко мне уже вопрос, а к дизайну

Veli
если он опечатался на первой цифре, он точно так ж...

"но это не ко мне уже вопрос, а к дизайну " зови дизайнера, сейчас решим

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Изменение типа с SomeException на String и правда удобней @cheese_hs . А вот такой вариант насколько некрасив еще? loadConfigDB :: IO (Either String ConfigDataBase) loadConfi...
Camara
7
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта