joken-前端工程师

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::
  404 随笔 :: 39 文章 :: 8 评论 :: 20万 阅读

React useMemo

  • 用途:主要用于记忆化计算结果,避免在每次渲染时都执行昂贵的计算。
  • 使用方式:接受一个函数和一个依赖项数组作为参数。只有当依赖项数组中的值发生变化时,才会重新执行给定的函数并返回新的计算结果;否则,它将返回上一次计算的结果。
  • 适用场景:优化性能,特别是在处理复杂或耗时的计算时。
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

Vue 3 computed

  • 用途:用于创建基于其他响应式数据的计算属性,这些计算属性会根据其依赖的数据自动更新。
  • 使用方式:可以定义 getter 函数,并且还可以选择性地提供 setter 函数以允许计算属性是可写的。
  • 适用场景:简化模板逻辑,减少重复代码,以及提高应用性能通过缓存计算结果直到依赖项变化。
import { computed } from 'vue';

const firstName = ref('John');
const lastName = ref('Doe');
const fullName = computed({
  get: () => `${firstName.value} ${lastName.value}`,
  set(newValue) {
    [firstName.value, lastName.value] = newValue.split(' ');
  }
});

比较

虽然两者都可以用来优化性能,但它们的设计目标略有不同:

  • useMemo 更加通用,适用于任何类型的计算结果的记忆化。
  • computed 则专注于基于响应式数据的计算,通常用于简化视图层的逻辑表达。

此外,computed 可以拥有 getter 和 setter 方法,使其成为可写的计算属性,而 useMemo 返回的是不可变的结果,如果需要类似的功能,则可能需要结合 useStateuseEffect 来实现。

总体而言都是可以缓存计算结果,避免不必要的重新计算,优化性能。

posted on   joken1310  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示