Первая проблема: Вы инициализировали state
массивом, сбросили его в массив, но обновили его до объекта.
Всегда держите ваши типы данных согласованными, в этом случае ни один из них не кажется подходящим. Я бы предложил использовать только строковое значение.
const [state, setState] = useState(initial)
handleInputChange(event) {
setState(event.target.value);
}
const resetState = () => {
setState(initial)
}
Помните - средство обновления useState
отличается от класса setState
. setState
объединяет предыдущее и новое значения состояния. useState
заменяет . Поэтому, если ваше состояние не является объектом, вызов обновления setState({ newState })
больше не является правильным.
Вторая проблема: <input onChange={handleInputChange()} />
не правильно. Этот код назначает onChange
значение, возвращаемое при вызове handleInputChange
. На самом деле вы хотите назначить onChange
саму функцию.
// no ()
<input onChange={handleInputChange} />
Третья проблема: Ваш хук состояний, по-видимому, не находится внутри функционального компонента и не похоже, он настроен для использования в качестве пользовательского хука (я могу ошибаться). Переместите их в функцию компонента.