问题描述
我正在尝试在基于 React 的 Web 应用程序中使用 Nano-memoize,该应用程序也使用 Typescript 和 Webpack.
I am trying to use Nano-memoize in my React based web application which also uses Typescript and Webpack.
我遵循了以下步骤:
npm install nano-memoize
- 在我的源文件中添加了
import * as nanomemoize from 'nano-memoize'
. - 记住一个函数,如
const memoizedFunc = nanomemoize(myFunc)
myFunc
接受两个参数 - 一个字符串和一个字符串[].
myFunc
takes two arguments - a string and an string[].
但是,我没有看到记忆发生,因为 myFunc
中的调试语句正在为相同的参数打印.
这应该如何以正确的方式完成?
However, I don't see the memoization happening because the debug statements in myFunc
are getting printed for same arguments.
How should this be done the right way?
推荐答案
Nano-memoize 不会对参数进行深度等于比较.传递给 myFunct
的 string[] 参数每次都是不同的对象,因此无法进行记忆.
Nano-memoize doesn't do deep equals comparison of arguments. The string[] arguments passed in to myFunct
is different object each time and consequently memoization doesn't work.
为了解决这个问题,我不得不使用 lodast.isquals 作为 nano-memoize 中的一个选项
To fix this I am forced to use lodast.isquals as an option in nano-memoize
const memoizedFunc = nanomemoize(myFunc, {
// deep equals required since one of the parameter is a string array
equals : (x, y) => isequal(x, y),
});
这篇关于在反应应用程序中导入和使用 nano-memoize?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!