Запретить отправку формы при наличии ошибок asyncValidation - PullRequest
1 голос
/ 12 марта 2019

Я использую React-admin, который использует примитивы для проверки своих форм.Я использую asyncValidation и asyncBlurFields для выполнения проверки на стороне сервера перед тем, как пользователь отправит что-либо.

Проверка работает, когда фокус покидает проверенное поле.Однако, если пользователь вводит неправильное значение в поле, а затем нажимает кнопку отправки (до изменения фокуса), форма отправляется до того, как сработает ошибка.

Здесь форма:

<SimpleForm
  basePath={basePath}
  redirect="list"
  resource={resource}
  record={record}
  save={save}
  asyncValidate={asyncValidate}
  asyncBlurFields={["price"]}
>
  <DisabledInput source="id" />
  <TextInput source="flavor" />
  <ReferenceInput
    source="categoryId"
    reference="categories"
    validate={[required()]}
  >
    <SelectInput optionText="name" {...props} />
  </ReferenceInput>
  <NumberInput source="price" validate={[number(), minValue(0)]} />
</SimpleForm>

А вот функция asyncValidate:

const asyncValidate = async (values, dispatch, props, field) => {
  return new Promise(async (resolve, reject) => {
    if (field === "price") {
      const res = await dataProviderFactory(GET_ONE, "categories", {
        id: values.categoryId
      });
      const data = await res.data;
      if (values.price && data.price_by_size)
        return reject({ price: "price do not allowed" });
      return resolve();
    }
  });
};

Есть ли какое-либо свойство (вact-admin или redux-формах), которое могло бы предотвратить отправку формы до ответа от asyncValidation?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...