当前位置:首页 > VUE

vue实现computed

2026-01-08 00:11:51VUE

Vue 中 computed 的实现原理

computed 属性是 Vue 的一个核心特性,它基于响应式依赖进行缓存,仅在依赖发生变化时重新计算。以下是 computed 的实现方式:

基本用法

在 Vue 组件中定义 computed 属性:

vue实现computed

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

实现机制

computed 属性通过以下方式工作:

  • 每个 computed 属性会被转换为一个 getter 函数
  • Vue 会为 computed 属性创建一个 watcher 实例
  • 当首次访问 computed 属性时,会执行计算并缓存结果
  • 只有当依赖的响应式数据变化时,才会重新计算

与 methods 的区别

computed 属性与方法的主要区别在于缓存机制:

vue实现computed

methods: {
  getFullName() {
    return this.firstName + ' ' + this.lastName
  }
}
  • computed 属性会缓存结果,只有依赖变化才重新计算
  • 方法每次调用都会执行函数体

计算属性 setter

computed 属性也可以定义 setter:

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

在 Composition API 中使用

Vue 3 的 Composition API 提供了 computed 函数:

import { ref, computed } from 'vue'

const firstName = ref('John')
const lastName = ref('Doe')

const fullName = computed(() => {
  return firstName.value + ' ' + lastName.value
})

// 可写计算属性
const writableFullName = computed({
  get() {
    return firstName.value + ' ' + lastName.value
  },
  set(newValue) {
    [firstName.value, lastName.value] = newValue.split(' ')
  }
})

性能优化建议

  • 对于复杂计算,优先使用 computed 而非 methods
  • 避免在 computed 中执行副作用操作
  • 对于不依赖响应式数据的计算,使用普通函数更高效
  • 大型项目可考虑使用 memoization 技术进一步优化

标签: vuecomputed
分享给朋友:

相关文章

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交…

vue 实现

vue 实现

Vue 实现的基本步骤 安装 Vue.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现…

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr…

简单实现vue

简单实现vue

Vue 的基本实现 创建一个简单的 Vue 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &l…