当前位置:首页 > VUE

vue computed 实现

2026-02-10 00:14:04VUE

Vue computed 实现原理

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

基本用法

在 Vue 组件中定义 computed 属性:

vue computed 实现

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

计算属性 vs 方法

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

vue computed 实现

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 实现计算属性:

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

注意事项

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

标签: vuecomputed
分享给朋友:

相关文章

ssh vue 实现

ssh vue 实现

使用SSH连接Vue项目部署的服务器 在Vue项目开发或部署过程中,可能需要通过SSH连接到远程服务器进行配置或维护。以下是实现SSH连接并部署Vue项目的关键步骤: 生成SSH密钥对 在本地终端运…

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

vue实现$.extend

vue实现$.extend

Vue 实现类似 jQuery 的 $.extend 功能 在 Vue 中实现类似 jQuery 的 $.extend 功能,可以通过多种方式完成。$.extend 主要用于合并多个对象的属性,Vue…

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transit…

vue 实现后退

vue 实现后退

实现后退功能的方法 在Vue中实现后退功能通常需要结合浏览器历史记录API或Vue Router的导航方法。以下是几种常见的实现方式: 使用Vue Router的go方法 this.$router…

lua 实现vue

lua 实现vue

在 Lua 中实现类似 Vue 的响应式框架需要模拟 Vue 的核心功能,包括数据绑定、模板渲染和依赖追踪。以下是实现的关键思路和代码示例: 响应式数据绑定 使用 Lua 的 __index 和…