FPF   付鹏篚的笔记
  • 主页
  • 归档
  • 分类
  • 标签
  • 关于

付鹏篚

  • 主页
  • 归档
  • 分类
  • 标签
  • 关于
Quiet主题
  • computed

Vue计算属性

付鹏篚
Vue

2019-12-15 20:00:00

文章目录
  1. 计算属性的缓存是什么意思?
  2. 例子
  3. 缓存的效果
  4. 为什么缓存很重要?
  5. 总结

在 Vue 中,计算属性(computed properties) 是基于它们的依赖进行缓存的,这意味着只有当它们的依赖发生变化时,计算属性才会重新计算。如果依赖没有变化,计算属性会直接返回之前的计算结果,而不再执行计算函数。

计算属性的缓存是什么意思?

缓存的意思是,计算属性的值是经过缓存的,只有当依赖的数据发生变化时,计算属性才会重新计算并更新缓存的值。如果依赖的数据没有变化,Vue 会直接使用缓存的值,而不是每次都重新计算。这种机制能够提高性能,避免不必要的计算。

例子

假设我们有一个 Vue 实例,里面有一个 fullName 计算属性,它依赖于 firstName 和 lastName 数据属性:

new Vue({
  el: '#app',
  data: {
    firstName: 'John',
    lastName: 'Doe'
  },
  computed: {
    fullName: function() {
      console.log('Calculating full name...');
      return this.firstName + ' ' + this.lastName;
    }
  }
});

在这个例子中,fullName 是一个计算属性,它依赖于 firstName 和 lastName。当我们访问 fullName 时,计算属性会执行 this.firstName + ' ' + this.lastName,并返回计算结果。

缓存的效果

  • 第一次访问 fullName 时,计算属性会计算并返回结果:"John Doe",同时 Vue 会缓存这个值。
  • 如果 firstName 或 lastName 没有变化,再次访问 fullName 时,Vue 会直接返回缓存的值,而不会重新计算。
  • 如果 firstName 或 lastName 发生变化,那么下次访问 fullName 时,Vue 会重新计算并更新缓存的值。
vm.firstName = 'Jane'; // 修改 firstName

console.log(vm.fullName); // 重新计算并输出 "Jane Doe"

为什么缓存很重要?

  1. 性能优化:如果计算属性涉及到复杂的运算或者大量的数据处理,不进行缓存会导致每次访问计算属性时都进行重复计算,增加了不必要的开销。缓存可以避免这种重复计算,提升性能。
  2. 自动依赖追踪:Vue 会自动追踪计算属性所依赖的响应式数据,只有当这些依赖的数据发生变化时,计算属性才会重新计算,避免了手动管理依赖关系的复杂性。

总结

  • 计算属性会缓存计算结果,只有当其依赖的响应式数据发生变化时,才会重新计算。
  • 计算属性的缓存机制可以显著提升性能,避免不必要的重复计算。
上一篇

Gitee + PicGo 个人图床

下一篇

防抖 (Debouncing)和节流 (Throttling)

©2025 By 付鹏篚. 主题:Quiet
Quiet主题