Я полагаю, что ваш вход для каждого рендера был воссоздан.
Как насчет того, чтобы использовать useRef
hook, поскольку документация гласит:
useRef
возвращает изменяемый объект ref, свойство .current
которого инициализируется переданным аргументом (initialValue). Возвращенный объект будет сохраняться в течение всего времени жизни компонента.
Как показано ниже:
const inputEl = useRef(null);
const [customState, customSetState] = useState({
customText: ''
});
return <input ref={inputEl} value={customState.customText} onChange={setCustomStateText} />
Другая проблема, которую я вижу там, которая может вызвать дальнейшие проблемы, не является мутацией предыдущее состояние. Я предлагаю использовать следующее:
function setCustomStateText(event) {
customSetState(prevState => {
return {
...prevState,
customText: event.target.value
}
});
}
Поскольку в документации говорится о setState()
:
setState()
не всегда сразу обновляет составная часть. Это может пакетировать или отложить обновление до позже. Это делает чтение this.state сразу после вызова setState () потенциальной ошибкой.
Надеюсь, это поможет!