本文介绍了在反应应用程序中导入和使用 nano-memoize?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在基于 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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-22 21:08