const [state, setState] = useState({ city: '', country: '' });
const handleCityChange = event => {
setState(prevState => {
console.log(prevState);
return { ...prevState, city: event.target.value };
});
};
//...
<input
type="text"
placeholder="city"
value={state.city}
onChange={handleCityChange}
/>
Я пытаюсь разрушить prevState
, который является объектом, и обновить только свойство city
. При первом нажатии клавиши он работает нормально, без ошибок, но как только я набираю вторую букву, я получаю ошибку
Uncaught TypeError: невозможно прочитать значение свойства null
Могу ли я узнать, из какой части исходит нуль? И с консоли Chrome я вижу предупреждение ниже, не уверен, связано ли оно
Предупреждение: это синтетическое событие используется повторно из соображений производительности. Если вы видите это, вы обращаетесь к свойству
target
в синтетическом событии выпущенного / аннулированного. Для него установлено значение null. Если вы должны сохранить исходное синтетическое событие, используйте event.persist (). См. Https: ... // response-event-pooling для получения дополнительной информации.
ОБНОВЛЕНИЯ. Если мы не используем setState
функционально, значит, все работает нормально?
const handleCityChange = event => {
setState({ ...state, city: event.target.value });
};