Делаю асинхронную валидацию поля через .test и она вызывается при изменении любого из полей формы (что, в принципе, задокументировано и ожидаемо), но с точки зрения UX, производительности и элеметарной логики быть такого не должно. Какие есть варианты вызывать test только при изменении определенных полей?
Сама задача заключается в том, что я валидирую код подтверждения почты с помощью запроса на сервер. Нужно триггерить эту асинхронную валидацию только при изменении почты или кода
В issue либы эта проблема обсуждается и там приводилось куча костылей, связанных с отказом от валидационной схемы в принципе и использованием кастомных валидационных функций, но мне интересен один из двух путей:
1) хорошее встроенное решение без костылей
2) отказ от yup в пользу другой более хорошей либы, если есть какие-нибудь варианты
Асинхронная валидация О_о ??? Это как? (сарказм) Сделай для начала лексический анализ фразы "асинхронная валидация" и всё встанет на свои места.
вполне может быть
а вообще бизнес логика в валидации не должна быть как по мне
Просто говоря: валидация это cb. А как ты вызываешь cb это уже другое.
почему валидация не может исходить из бизнес логики? Да есть само собой разумеющиеся и технически необходимые правила, но не вижу причин не делать более продвинутые правила, которые конкретно от проекта зависят. По сути от асинк валидации тогда вообще смысла нет, если там нельзя бизнес логику располагать я могу это, конечно, при сабмите или вообще на беке проверять, но с точки зрения интерфейса как-то поприкольнее выглядит именно с таким форматом валидации я приложил видео, что я ожидаю от интерфейса
ладно, держи в курсе
что такое мета код?))
напиши тесты, все поймешь
херня, надо делать проверку при отправке, т. к. твой вариант тупо брутфорсить можно ты бы ещё пароль таким же способом валидировал) ну и смысл от кнопки "проверить код", если он итак при вводе проверяется?
боже, какие же вы тут все умненькие и любите отвечать на то, что вас не спрашивали ты вообще понимаешь, что такое код проверки мейла и зачем его проверяют?) Это исключительно фича для клиента, чтобы он случайно не ввел левый мейл и ему на левый мейл не зарегистрировало аккаунт. Иди и брутфорсь, если хочешь, что тебе это даст? намного быстрее письмо проверить, чем брутить комбинацию из 5 цифр хорошо, допустим, я сделаю при самбите, на самбите ее брутфорсить нельзя будет? где ты увидел кнопку «проверить код» вообще? хватит надумывать себе что-то и отвечать на это, умоляю, ответьте на конкретный вопрос или не отвечайте вообще
на сабмите можно будет сделать попытки ввода хотя бы не проверить код, а "отправить код", сути не меняет
а так нельзя будет сделать? Валидация происходит тогда, когда ты ввел ровно 5 символов. Если ты будешь стирать и вводить заново, я могу запретить тебе возможность временно это делать на многих сервисах валидация кода происходит именно после ввода всех символов, а не после кнопки отправить. Та же авторизация в телеге, где безопасность, к слову, вообще нужна. У меня - не нужна
а если человек опечатался на первой цифре? ну и про телегу: если и есть места, где надо вводить код из смс, то на экране отображается только поле ввода для этого кода и всё, нет лишних кнопок/полей
если он опечатался на первой цифре, он точно так же нажмет сабмит и только потом об этом узнает… Ровно такая же ситуация. Можно дать те же 10 попыток какие-нибудь + там стоит дебаунс + безопасность тут не нужна отправить код - это отправить код проверки на почту, чтобы юзер его там получил и ввел в поле. Возможно, эту кнопку надо перенести к полю эмейл, а не к полю код, либо разделить на степы, но это не ко мне уже вопрос, а к дизайну
"но это не ко мне уже вопрос, а к дизайну " зови дизайнера, сейчас решим
Обсуждают сегодня