当前位置: 首页 > 面试题库 >

使用useMemo代替React.memo语法问题

陆飞龙
2023-03-14
问题内容

我需要演示如何使用React Hooks useMemo。我有如下工作代码可以满足我的要求:

const SpeakerCardDetail = React.memo(
  ({id,...

我找到了一个链接,该链接显示我可以更像这样使用语法,但是我无法确切地知道它。

据我所知:

const SpeakerDetail = React.useMemo(() => {
   ({ id,

显然不是。我确实知道React.memo解决了这个问题,但是我确实需要展示useMemo的使用情况,并希望可以使用其他语法。


问题答案:

React.memo并且React.useMemo根本不等效(不要依赖命名相似性)。这是React.memo
doc的引文:

React.memo是高阶成分。

因此,这是一个HOC,可以优化组件的呈现,因为它可以呈现具有相同属性的相同输出。

React.useMemo另一方面,它更通用,并返回一个备注值:

传递“创建”函数和一系列依赖项。useMemo仅在其中一个依赖项(ab)已更改时才重新计算存储的值。

const memoizedValue = useMemo(
  () => computeExpensiveValue(a, b), 
  [a, b]
);

尽管可以骇人使用React.memo它而不是使用它,但这并不是其目的,它会使混乱更加严重。useMemo是一个钩子,必须遵守某些使用规则。

还有这个警告:

将来,React可能会选择“忘记”一些以前记忆的值,并在下一次渲染时重新计算它们,例如为屏幕外组件释放内存。编写您的代码,使其仍然可以工作useMemo,然后添加代码
以优化性能



 类似资料:
  • 如果你不使用 CodeIgniter 的模板引擎,则你可以在视图文件中使用原始 PHP 代码。要使 PHP 代码达到最精简并使其更容易辨认,因此建议你使用 PHP 替代语法控制结构及短标记的 echo 语句。 建议你使用 PHP 的语法为你的控制结构和简短的输出标签。如果你还不熟悉这个语法,下面你将学会如何从代码中消灭大括号和“echo”语句。 自动短标记支持 注:如果你发现本页描述的语法在你的服

  • 如果你不使用 CodeIgniter 的 模板引擎, 那么你就只能在视图文件中使用纯 PHP 语法了。为了精简视图文件, 使其更可读,建议你在写控制结构或 echo 语句时使用 PHP 的替代语法。 如果你还不熟悉这个语法,下面将介绍如何通过这个语法来消灭你代码 中的大括号和 echo 语句。 自动短标记支持 注解 如果你发现本页所介绍的语法在你的服务器上行不通,那么有可能是 你的 PHP.ini

  • 很多时候,我们需要在组件中计算数据,例如将数组组合到单个值,或者排序、过滤等。希望在其他状态发生变化时,不需要再重复 render。 useMemo 它与 useCallback 密切相关,但用于优化数据处理。它有相同的 API 来定义它所依赖的值。传入需要创建的函数和依赖项数组。 useMemo 只会在某个依赖项发生更改时重新计算 memoized 值。 此优化有助于避免在每个渲染上进行高开销的

  • 本文向大家介绍PHP中的替代语法简介,包括了PHP中的替代语法简介的使用技巧和注意事项,需要的朋友参考一下 替代语法是PHP程序设计中不常见到,有时却又很重要的一个概念。今天本文就以实例形式展示了这一概念的用法。 查看一下wordpress的代码,里面可以见到有些少见的php替代语法,如下所示: 很多读者都会有这样的疑问:else后面的冒号和endif代表啥?google了一下就可以明白,这就是p

  • 本文向大家介绍PHP中的替代语法介绍,包括了PHP中的替代语法介绍的使用技巧和注意事项,需要的朋友参考一下 今天看了一下wordpress的代码,里面有些少见的php替代语法, else后面的冒号和endif代表啥?菜鸟一个,没有见过,所以就google了一下,才明白这是php的替代语法, 冒号(:)等价于左花括号({),endif等价于右花括号(}); 举个例子吧: 是负数拉 上面的语句等同于

  • null 代码如下所示: 和我想提高的班级: 我该怎么办?每个字段都在使用,但每个触发器都在使用。另外,这种情况有点特殊(OnFinalMethod需要参数)。基于上面的文章,我尝试重构这段代码,但没有成功。 你知道吗?:)