как обрабатывать asyn c ответ как ошибку проверки в formik - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть этот код.

export const PostcodeFinder: React.FC = () => {
  const {
    postcodeSearch,
    isLoading,
    data,
    isPending,
    error: fetchError,
  } = usePostcodeSearch();


  return (
    <Formik
      validate={(values) => {
        // will be ran before the `fetchError` is set from async response
        if (fetchError) {
          return { postcode: fetchError };
        }

        return {};
      }}

Проблема в том, что validate вызывается onChange или когда форма отправляется, так что она запускается до того, как ответ asyn c вернется.

Как я могу установить ошибку проверки из асин c ответа в formik?

1 Ответ

0 голосов
/ 15 апреля 2020

Вам необходимо вернуть обещание, которое разрешит объект ошибки { someKey: 'some message' }

<Formik
      validate={async (values) => {
        const resp = fetch(`/validateEmailExists?email=${values.email}`);
        const data = await resp.json();
        if (data.emailExists) {
          return { email: data.message /* it can be your own custom message */ };
        }

        return {};
      }}
...