Javascript 在react应用程序中导入和使用nano memoize?
我正在尝试在基于React的web应用程序中使用Nano memoize,该应用程序也使用Typescript和Webpack 我遵循了以下步骤:Javascript 在react应用程序中导入和使用nano memoize?,javascript,reactjs,webpack,memoization,Javascript,Reactjs,Webpack,Memoization,我正在尝试在基于React的web应用程序中使用Nano memoize,该应用程序也使用Typescript和Webpack 我遵循了以下步骤: npm安装nano memoize 将“nano memoize”中的import*作为nanomemoize添加到我的源文件中 记忆一个函数,如const memoizedFunc=nanomomeize(myFunc) myFunc接受两个参数—一个字符串和一个字符串[] 但是,我没有看到内存化发生,因为myFunc中的调试语句是针对相同的参
npm安装nano memoize
- 将“nano memoize”中的
import*作为nanomemoize添加到我的源文件中
- 记忆一个函数,如
const memoizedFunc=nanomomeize(myFunc)
myFunc
接受两个参数—一个字符串和一个字符串[]
但是,我没有看到内存化发生,因为
myFunc
中的调试语句是针对相同的参数打印的。如何正确地完成这项工作?Nano memoize无法对参数进行深入的对等比较。传递给
myFunct
的字符串[]参数每次都是不同的对象,因此记忆无法工作
为了解决这个问题,我不得不在nano memoize中使用lodast.isquals作为选项
const memoizedFunc = nanomemoize(myFunc, {
// deep equals required since one of the parameter is a string array
equals : (x, y) => isequal(x, y),
});
我想传递给memoizedFunc的参数已经改变了。注意,
{hi:1}=={hi:1}
和x=>x==x=>x
。因此,如果像memoizedFunc({name,id})
那样调用memoizedFunc,那么最好不要使用它。如果您使用的是redux,那么您应该查看或查看useMemo和useCallback挂钩。“但是,我没有看到内存化。”您为什么这么说?您如何检查是否“发生”了备忘录?@Peter“myFunc”中的调试语句将针对相同的参数打印出来。