reactjs - 反应,让 UseMemo 与文本框一起正常工作
问题描述
以下 UseMemo 不起作用。我正在尝试记住数字值的平方 X^2。我输入 3,计算数据,然后输入 4,然后再输入 3。每次都会重新计算。我怎样才能解决这个问题?
function App() {
const [number, setNumber] = useState(1);
const onChange = event => {
setNumber(Number(event.target.value));
};
const squareResult = useMemo(() => calculateSquare(number), [number]);
function calculateSquare(n) {
console.log('numberSquare(n) called!');
return n * n;
}
return (
<div>
<label htmlFor="test">Enter Number: </label>
<input id="test" type="number" onChange={onChange}/>
<h1>Data Square {squareResult}</h1>
</div>
);
}
解决方案
该useMemo
钩子可防止每次重新渲染组件时调用相同的(昂贵的)函数。
当依赖关系发生变化时,函数会使用新参数重新运行。
useMemo
不保留一组历史结果。
推荐阅读
- android - adMob 测试广告无法在手机上运行,但可以在平板电脑上运行
- mysql - 计算具有特定评级mysql的餐厅
- linux - 如何在 Manjaro 上将 sysvinit 脚本转换为 systemd
- com - 注册 DirectshowFilter 将 InprocServer32 注册表项链接到 regsvr32.exe 而不是主机 DLL,我哪里出错了?
- html - 图像大小改进和 CSS 文件
- javascript - KnockoutJS - 可观察对象的可观察数组,包含来自 SQL 服务器的数据
- c# - C# .NET 到 Docker 上的 Apache Ignite
- excel - 设置 HTML_Content = CreateObject("htmlfile") 不起作用
- list - 为什么有时你必须创建一个新列表而有时你不需要在 Unity 中?
- azure - 从 Visual Studio,无法发布到 Azure 应用服务