Проверка с помощью Yup не показывает правильное сообщение

Я использую Ага и Formik для проверки некоторых полей.

Одно из должно быть числом, вот как это было сделано:

import * as Yup from 'yup';

...

const requiredErrorMessage = 'This field is required';
const numberErrorMessage = 'This field is must be numerical';

 const validationSchema = Yup.object({
      anotherField: Yup.string().required(requiredErrorMessage),
      numberField: Yup.number(numberErrorMessage).required(requiredErrorMessage),
 });

Поэтому я ожидаю, что он покажет сообщение. Это поле должно быть числовым, если вводятся символы, отличные от чисел.

Но это не так. Если я напишу a в поле, сообщение будет таким: цена должна быть типа number, но окончательное значение было: NaN (преобразование из значения "a").

Почему показывает другое сообщение?


person Leo Messi    schedule 08.09.2020    source источник


Ответы (1)


Для пользовательского сообщения для типа номера вы должны вызвать функцию typeError():

numberField: Yup.number().typeError(numberErrorMessage).required(requiredErrorMessage),
person Luis Paulo Pinto    schedule 08.09.2020