Реагировать isNaN с номером типа ввода - PullRequest
0 голосов
/ 17 марта 2020

Мне нужно проверить NaN, прежде чем я сохраню значение с помощью useState в моем приложении React Hooks, но, похоже, оно не проверяет?

const handleStartValueChange = (value) => {
        if (isNaN(parseInt(value)) ) {
            setStartValue(0);
        }
        setStartValue(parseInt(value));
    };

Это вызывается из onChange в поле ввода с номером типа

<div className="startValueHeader">Start value</div>
                        <input
                            value={startValue}
                            type="number"
                            className="startValueValue"
                            onChange={(event) => {
                                handleStartValueChange(event.target.value);
                            }}
                        />

Чего мне не хватает?

Причина, по которой мне нужно проверить NaN, заключается в том, что мне нужно сохранить значение 0 вместо '', когда я очищаю поле ввода

1 Ответ

1 голос
/ 17 марта 2020

Число - преобразование чисел c строк и нулей в числа

Number('123')     // 123
Number('12.3')    // 12.3
Number('12.00')   // 12
Number('123e-1')  // 12.3
Number('')        // 0 <--- you need this
Number(null)      // 0
Number('0x11')    // 17
Number('0b11')    // 3
Number('0o11')    // 9
Number('foo')     // NaN
Number('100a')    // NaN
Number('-Infinity') //-Infinity
const handleStartValueChange = value => {
  const number = Number(value); // converts '' from empty input -> 0
  setStartValue(number)
};

Edit thirsty-snyder-ywi7q

ПРИМЕЧАНИЕ : если вместо этого указать defaultValue, на входе не будет отображаться «0», когда он пуст.

...