当前位置:首页 > 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实现防抖节流

vue实现防抖节流

Vue 中实现防抖(Debounce) 防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。 方法1:使用 Lodash 的 _.debou…

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <i…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue实现队列

vue实现队列

Vue 实现队列功能 在 Vue 中实现队列功能可以通过多种方式完成,以下是几种常见的方法: 使用数组模拟队列 队列遵循先进先出(FIFO)原则,可以用数组的 push 和 shift 方法模拟入队…

vue实现mvvm

vue实现mvvm

Vue 实现 MVVM 模式 MVVM(Model-View-ViewModel)是一种前端架构模式,Vue 是其典型实现之一。MVVM 的核心是通过数据绑定和响应式系统实现视图与数据的自动同步。…