当前位置:首页 > VUE

vue computed实现

2026-03-07 06:37:15VUE

computed 的基本用法

在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存,只有在依赖发生变化时才会重新计算。

new Vue({
  data: {
    firstName: '张',
    lastName: '三'
  },
  computed: {
    fullName: function() {
      return this.firstName + ' ' + this.lastName
    }
  }
})

computed 的 getter 和 setter

计算属性默认只有 getter,但也可以提供 setter 方法。

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

computed 与 methods 的区别

计算属性是基于它们的响应式依赖进行缓存的,只有相关依赖发生改变时才会重新求值。而 methods 每次调用都会执行函数。

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

computed 与 watch 的区别

watch 适用于数据变化时执行异步或开销较大的操作,而 computed 适用于同步计算派生值。

watch: {
  firstName: function(val) {
    this.fullName = val + ' ' + this.lastName
  },
  lastName: function(val) {
    this.fullName = this.firstName + ' ' + val
  }
}

Vue 3 中的 computed

在 Vue 3 组合式 API 中,使用 computed 函数来创建计算属性。

import { ref, computed } from 'vue'

setup() {
  const firstName = ref('张')
  const lastName = ref('三')

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

  return { fullName }
}

computed 的依赖追踪

计算属性会自动追踪响应式依赖,当依赖项变化时,计算属性会自动更新。

computed: {
  reversedMessage: function() {
    return this.message.split('').reverse().join('')
  }
}

计算属性的缓存机制

计算属性会基于它们的响应式依赖进行缓存,多次访问计算属性会立即返回之前的计算结果,而不必再次执行函数。

vue computed实现

computed: {
  now: function() {
    return Date.now()  // 不会更新,因为不是响应式依赖
  }
}

标签: vuecomputed
分享给朋友:

相关文章

vue实现input

vue实现input

Vue 实现 Input 输入框的方法 基本双向绑定 使用 v-model 指令实现双向数据绑定,适用于大多数表单场景: <template> <input v-model="…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现ajax

vue实现ajax

Vue 中实现 AJAX 的几种方法 在 Vue 中实现 AJAX 请求可以通过原生 JavaScript 的 XMLHttpRequest、第三方库如 axios 或 fetch API 来完成。以…

vue实现getapp

vue实现getapp

Vue 中实现全局获取应用实例的方法 在 Vue 3 中,可以通过 getCurrentInstance 方法获取当前组件实例,但需要明确其使用场景和限制。以下是具体实现方式: 方法一:通过 get…

vue多选实现

vue多选实现

Vue 多选实现方法 基础实现(v-model + multiple) 在 Vue 中实现多选可以通过 <select> 元素的 multiple 属性结合 v-model 完成。v-mo…

vue实现slot

vue实现slot

Vue 中的 Slot 实现方法 Vue 的 slot 是一种内容分发机制,允许父组件向子组件插入内容。以下是几种常见的 Slot 实现方式: 默认 Slot 子组件通过 <slot>…