Yup - поле ввода как целое, положительное и допускающее 0 - запятая в числе не обрабатывается должным образом

У меня есть следующее:

const schema = yup.object().shape({
    closedBugs: yup
      .number()
      .typeError("Please enter a valid number")
      .integer("Please enter an integer")
      .required("This field is required")
      .test(
        "is-positive",
        "Please enter a positive number",
        (value) => value >= 0 && 1 / value !== -Infinity
      ),
  });

Что отлично работает, я получаю ожидаемые сообщения проверки для всего, что не является положительным целым числом (допуская 0).
Но мне это странно:
Если я ввожу -45.1 (с точкой), я получаю сообщения:

Please enter an integer
Please enter a positive number 

Но если я ввожу -45,1 (с запятой), я получаю сообщение:

Please enter a valid number

Почему это обрабатывается по-разному и есть ли способ заставить его вести себя как вход -45.1 (тот, что с точкой)?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил это, изменив значение в формах реакции-хука:

               <input
                  {...register("closedBugs", {
                    setValueAs: modifyBugsValues,
                  })}
                  onChange = {(e) => handleChangeEvent(e.target.name, e.target.value)}
                  name = "closedBugs"
                  placeholder = "1"
                  required
                />

Где находится modifyBugsValues:

const modifyBugsValues = (value) => {
    if (value === "") {
      // needed in order for yup to return required field validation in case of empty field
      return undefined;
    } else {
      // needed in order for yup to treat 1,2 as 1.2 and return integer validation
      value = value.replace(/,/g, ".");
      return value;
    }
  }; 

Не уверен, что есть лучший способ сделать это :D

Другие вопросы по теме