reactjs - 好奇的反应行为
问题描述
我最近一直在玩 React hooks,偶然发现了一些我不太明白的东西。
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或Delete之前,上面的代码可以正常工作。onChange 没有被触发。想法?PS 该代码不用于生产,只是在胡闹。
解决方案
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)}
/>
);
推荐阅读
- r - R将一列中的日期与多列中的日期进行比较
- mysql - mysql 三表加入group by 每天
- javascript - react-router v6:使用 searchParams 导航到 URL
- python - python .apply 每天不包括几个小时
- sqlite - SQLite 比较两个表并获取实际行
- javascript - 在javascript中按字段合并两个复杂的对象数组
- r - 有什么方法可以将图片(.png)放在 ggplotly 工具提示中?
- html - 如何将 Angular 项目转换为非 Angular 项目?
- node.js - 在 NodeJS 中的 URL 之前添加字符串
- angular - 无法通过 routerLink 从模态重定向