#reactjs #typescript
#reactjs #typescript
Вопрос:
Пытаюсь создать поле ввода чисел в React, где, как только пользователь нажимает на ввод, начальное значение очищается. Теперь, похоже, есть решения с текстовыми вводами, но я не видел, чтобы это делалось с числовыми вводами. Каждый раз, когда я пытался решить эту проблему, я всегда получаю «компонент изменяет контролируемый ввод типа number на неконтролируемый». Есть предложения? Вот краткая демонстрационная демонстрация codesandbox
Комментарии:
1. Это не совсем «стандартное» поведение, не так ли? Просто установите для него разумное значение по умолчанию.
Ответ №1:
Очистка ввода текста — это просто установка его значения в пустую строку. На самом деле вы можете сделать это и с помощью ввода чисел. (Фактически, значение, которое вы сохраняете, уже является строкой, хотя вы ввели его как number | undefined
).
onFocus={() => setCount("")}
Ответ №2:
Для того, чтобы задать для ввода числа определенное значение, вам необходимо указать его в качестве аргумента при вызове функции ‘setCount()’, если вы хотите, чтобы значение по умолчанию было, например, 4:
onFocus={() => setCount(4)}
пока вы просто вызываете его с неопределенным в качестве аргумента:
onFocus={() => setCount(undefined)}
В данный момент код не работает, потому что вы пытаетесь установить содержимое поля ввода как неопределенное