【React hooks 学习笔记】useMemo

简介: 前端西瓜哥

大家好,我是前端西瓜哥。我们继续学习 React Hooks,今天说说 useMemo。

useMemo 用于缓存值。它接受一个回调函数,和一个依赖项数组。

组件第一次渲染时,useMemo 会执行该回调函数,拿到一个初始值。

之后重新渲染时,如果依赖项没变,会使用上一次缓存的值;如果依赖项更新了,就会执行回调函数返回新的值,并将其缓存起来。

const complexCalc = count => {
  // 假装自己很复杂
  return count;
}
const val = useMemo(() => complexCalc(count), [count]);

前面我们学过 useCallback 在表现上,可以看做是 useMemo 的一个返回值为函数的特例。

我们完全可以用 useMemo 来替代 useCallback:

useCallback(fn, deps);
// 等价于
useMemo(() => fn, deps);

对比 Vue 计算属性

说起来,useMemo 很像 Vue 的计算属性(computed)。二者都是在依赖项发生改变时,重新计算出一个值,否则使用缓存。

对于依赖项的处理,Vue 要更智能些,不需要自己维护依赖项数组,Vue 自己能够知道函数的执行使用了哪些响应式属性,一旦改变就更新计算属性。

但缺点是不能监听非响应式属性的更新,也不能做到忽视掉一些依赖项的变化。只要一个变了就一定会执行函数来更新。

对于编写 useMemo 时可能不小心漏掉依赖项的问题,可以通过使用 React 官方提供的 eslint 插件提示来解决。

总的来说,我觉得 React 的 useMemo 更胜一筹,不,简直完胜。

结尾

useMemo 的功能很简单,就是每次渲染时,通过判断依赖项是否保持原状,来决定是否使用缓存,来减少一些高昂的运算过程。

相关文章
|
2月前
|
前端开发 JavaScript
React Hooks 全面解析
【10月更文挑战第11天】React Hooks 是 React 16.8 引入的新特性,允许在函数组件中使用状态和其他 React 特性,简化了状态管理和生命周期管理。本文从基础概念入手,详细介绍了 `useState` 和 `useEffect` 的用法,探讨了常见问题和易错点,并提供了代码示例。通过学习本文,你将更好地理解和使用 Hooks,提升开发效率。
74 4
|
20天前
|
前端开发 JavaScript API
探究 React Hooks:如何利用全新 API 优化组件逻辑复用与状态管理
本文深入探讨React Hooks的使用方法,通过全新API优化组件逻辑复用和状态管理,提升开发效率和代码可维护性。
|
23天前
|
前端开发
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
21 3
|
28天前
|
前端开发 JavaScript
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
|
1月前
|
前端开发 JavaScript 开发者
“揭秘React Hooks的神秘面纱:如何掌握这些改变游戏规则的超能力以打造无敌前端应用”
【10月更文挑战第25天】React Hooks 自 2018 年推出以来,已成为 React 功能组件的重要组成部分。本文全面解析了 React Hooks 的核心概念,包括 `useState` 和 `useEffect` 的使用方法,并提供了最佳实践,如避免过度使用 Hooks、保持 Hooks 调用顺序一致、使用 `useReducer` 管理复杂状态逻辑、自定义 Hooks 封装复用逻辑等,帮助开发者更高效地使用 Hooks,构建健壮且易于维护的 React 应用。
34 2
|
2月前
|
前端开发 开发者
React 提供的其他重要 Hooks
【10月更文挑战第20天】React 提供了一系列强大的 Hooks,除了 `useRef` 之外,还有许多其他重要的 Hooks,它们共同构成了函数式组件开发的基础。
37 6
|
17天前
|
前端开发 JavaScript
React Hooks 深入解析
React Hooks 深入解析
20 0
|
17天前
|
前端开发
React Hooks:从基础到进阶的深入理解
React Hooks:从基础到进阶的深入理解
25 0
|
20天前
|
缓存 前端开发 开发者
深入理解React Hooks,打造高效响应式UI
深入理解React Hooks,打造高效响应式UI
29 0
|
2月前
|
前端开发 JavaScript 开发者
React Hooks
10月更文挑战第13天
37 1