当前位置:首页 > VUE

vue computed 实现

2026-02-10 00:14:04VUE

Vue computed 实现原理

Vue 的 computed 属性是基于响应式依赖进行缓存的,当依赖的响应式数据发生变化时,computed 属性会重新计算,否则直接返回缓存值。

基本用法

在 Vue 组件中定义 computed 属性:

export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    }
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName
    }
  }
}

计算属性 vs 方法

计算属性会缓存结果,只有依赖的响应式数据变化时才会重新计算。方法每次调用都会执行函数体:

methods: {
  getFullName() {
    return this.firstName + ' ' + this.lastName
  }
}

计算属性的 setter

计算属性默认只有 getter,也可以提供 setter:

computed: {
  fullName: {
    get() {
      return this.firstName + ' ' + this.lastName
    },
    set(newValue) {
      const names = newValue.split(' ')
      this.firstName = names[0]
      this.lastName = names[names.length - 1]
    }
  }
}

实现原理分析

Vue 内部通过 Object.defineProperty 或 Proxy 实现计算属性:

vue computed 实现

  1. 初始化阶段收集计算属性的依赖
  2. 建立计算属性和依赖数据的关联
  3. 依赖变化时触发计算属性重新计算
  4. 计算结果缓存,避免重复计算

注意事项

计算属性应只包含同步操作,异步操作应使用 watch 或 methods 避免在计算属性中产生副作用(如修改其他数据) 计算属性依赖的数据必须是响应式的

标签: vuecomputed
分享给朋友:

相关文章

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

vue实现图库

vue实现图库

Vue 实现图库的基本方法 使用 Vue 实现图库功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用 Vue 和第三方库(如 Vue Gallery) 安装 vue-gallery 或…

vue 实现href

vue 实现href

Vue 实现 href 的方法 在 Vue 中实现 href 功能可以通过多种方式,具体取决于需求场景。以下是几种常见的方法: 使用 <a> 标签 直接使用 HTML 的 <a&g…

vue 实现报价

vue 实现报价

Vue 实现报价功能 在 Vue 中实现报价功能通常涉及前端表单交互、数据计算和与后端 API 的通信。以下是实现报价功能的几种常见方法: 表单设计与数据绑定 使用 Vue 的 v-model 指…

vue实现滚屏

vue实现滚屏

实现滚屏的基本方法 在Vue中实现滚屏效果可以通过多种方式完成,常见的有原生JavaScript滚动方法、第三方库或CSS动画。以下是几种常见实现方式: 使用window.scrollTo或Elem…

vue下载实现

vue下载实现

Vue 下载实现方法 在 Vue 项目中实现文件下载功能可以通过多种方式完成,以下是几种常见的方法: 使用 <a> 标签实现下载 通过动态创建 <a> 标签并设置 href…