Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在react应用程序中导入和使用nano memoize?_Javascript_Reactjs_Webpack_Memoization - Fatal编程技术网

Javascript 在react应用程序中导入和使用nano memoize?

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中的调试语句是针对相同的参

我正在尝试在基于React的web应用程序中使用Nano memoize,该应用程序也使用Typescript和Webpack

我遵循了以下步骤:

  • 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”中的调试语句将针对相同的参数打印出来。