В последнее время я играл с хуками React и наткнулся на то, чего не мог понять.
const [value, setValue] = useState("");
const [filtered, setFiltered] = useState("");
useLayoutEffect(() => {
setFiltered(value);
}, value);
return (
<input
type = "text"
value = {filtered}
onChange = {e => setValue(e.target.value)}
/>
);
Приведенный выше код работает нормально, пока я не попробую Backspace или Удалить. onChange не срабатывает. Мысли? P.S. Код не предназначен для продакшена, просто дурачится.





Приведенный выше код будет вести себя правильно, если только вы были вторым аргументом useLayoutEffect в виде массива, а не строки.
const [value, setValue] = useState("");
const [filtered, setFiltered] = useState("");
useLayoutEffect(
() => {
setFiltered(value);
},
[value]
);
return (
<input
type = "text"
value = {filtered}
onChange = {e => setValue(e.target.value)}
/>
);