ble*_*nko 3 reactjs react-hooks
我有一个问题,功能组件中的(假)长时间运行/昂贵的函数似乎没有像我想象的那样被记忆。
根据我对记忆化的理解,调用具有相同参数值的记忆化函数只会返回前一次调用的结果。
当组件上的值发生变化但不在依赖项列表中时,这只会发生在 useMemo(至少在我的应用程序中)。我知道不同的值需要再次重新运行昂贵的函数,但即使我使用以前使用的值(值/原始类型,而不是引用类型/对象)调用该函数,它也会再次运行昂贵的函数。
要么我不太正确,要么我对 useMemo 功能的理解不太正确(这是 React.memo 的用武之地吗?)。
这可以在这个基本的stackblitz 中看到。
谁能告诉我我哪里出错了。
小智 8
你在想的是你能说 50% 正确。
useMemo 不会为同一组参数再次执行代码,但是
它只记住参数的最后一个值。
在您的示例中,当您单击 + 和 - 按钮时,您正在更改value上一个值的值。在第二次单击时,如果您返回相同的值,这并不意味着 memoize 将在不执行该函数的情况下返回值。
尝试添加一个按钮并单击它设置相同的当前值setValue(value),您将看到没有重新计算发生。
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |