首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >useMemo钩用脲酶

useMemo钩用脲酶
EN

Stack Overflow用户
提问于 2019-03-29 12:49:58
回答 2查看 6.5K关注 0票数 3

看看React的useMemo 文档。他们说,当你需要计算一个昂贵的计算时使用它。

此优化有助于避免在每次渲染时进行昂贵的计算。

我查看了他们提供的memoized 链接,我理解的是,您可以把它看作缓存。

我不是计算机科学方面的专家,但我知道回忆录是计算斐波纳契的一个很好的优化

我仍然在努力更好地理解为什么和如何使用useMemo,但是有一些事情我还不清楚。

  • 什么是expensive calculations
  • 有人能给出真正的react例子吗?
  • 在什么情况下,useMemo对性能优化有好处?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-29 13:06:42

首先,您应该知道,您只能回溯纯函数,即其输出完全取决于其参数的函数。

因此,简而言之,当您知道大多数输入保持不变时,您就会进行回忆录,并且您不希望对相同的输入一次又一次地重新计算结果,特别是在计算开销很大时,这可能意味着需要在其上执行的数据集很大。

  • 使用回忆录的一种情况可能是当您试图从一个大数组中筛选数据时。
  • 另一种情况是,您希望将基于某些参数的嵌套对象转换为其他对象或数组。

在这种情况下,useMemo是非常有用的。如果数组和筛选条件在重新呈现时保持不变,则不会再次执行计算,而是从缓存返回先前计算的数据。

票数 11
EN

Stack Overflow用户

发布于 2019-03-29 13:05:41

Memoization是存储计算值的过程,因此不必再重新计算它。

在react中,最常见的用法是从redux存储(其中存在重选)派生的值,或者是功能组件的完整回忆录。

没有金科玉律来决定一个函数是否昂贵,是否应该回忆录,因为它在很大程度上取决于您的特定用例,以及它的性能缺陷,但是通常它被保存用于数组筛选/排序,或者类似的东西。

知道什么应该回忆录,什么不是,最好的方法是分析你的应用程序,看看哪些计算占用最多的资源,并回忆录,看看它是否有区别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55417808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档