reactjs - 如何记忆自定义钩子以提高性能
问题描述
具有以下功能,这是常见的自定义钩子并从多个地方调用。
如何记住这一点以提高性能。(虽然在浏览器上调试然后观察到它被多次调用)。如果fields.forEach
只记住而不是自定义挂钩下的所有代码,那也很好
我试图在钩子内添加一个函数,但是我需要返回result
对象而不是函数。
export function useListObject(fields)
{
const allData = useGetAll();
const result = {};
fields.foreach((field) =>{
...
...
...
result[field]= {key, value , parameters, names}
});
return result;
}
///// 组件调用如下
const listData = useListObject(['state','country','categoryTypes','category']);
//这里可以memoize吗?所以不需要在自定义钩子中记忆。
解决方案
你可以使用useMemo
React 提供的钩子来记忆你的 forEach 循环的结果:
const result = useMemo(() => {
const fieldData = {};
fields.foreach((field) =>{
...
...
...
fieldData[field] = { key, value , parameters, names }
})
return fieldData;
}, [fields]);
这样,在fields
更改之前,result
将记住您在useMemo
调用中返回的任何内容。
推荐阅读
- python - 命令“python setup.py egg_info”在 C:\Users\ELYSSU~1\AppData\Local\Temp\pip-build-7ado9ytn\cryptography\ 中失败,错误代码为 1
- php - Laravel 没有读取 AWS Lambda 上的环境变量
- amazon-ec2 - AWS 负载均衡器 https 配置不起作用
- validation - Puppet 验证使用端口(例如 1.2.3.4:5678)查找 ip 地址
- javascript - 动态创建异步函数(错误)
- ios - PayTM All-In-One SDK 支付卡在处理中,并且没有调用代表
- basic-authentication - 基本身份验证不适用于 Traefik v2.1
- wpf - 具有多个底层视觉效果的自定义 WPF 画布
- python - 错误:命令出错,退出状态为 1:python setup.py egg_info 检查日志以获取完整的命令输出。[烧瓶]
- javascript - 当我尝试将 String 转换为 Date 时,它会在 Javascript 中返回今天的日期吗?