当前位置:首页 > VUE

computed vue 实现

2026-01-07 19:05:06VUE

computed 在 Vue 中的基本用法

Vue 的 computed 属性用于声明依赖于其他数据的计算属性。当依赖的数据变化时,计算属性会自动重新计算并缓存结果。

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

fullName 会根据 firstNamelastName 的变化自动更新,且仅在依赖变化时重新计算。

computed 的缓存特性

计算属性会基于依赖的响应式数据缓存结果。只有当依赖的数据(如 firstNamelastName)变化时,computed 才会重新计算。多次访问 fullName 只会触发一次计算。

console.log(this.fullName) // 计算一次
console.log(this.fullName) // 直接返回缓存

computed 的 setter 方法

默认情况下,computed 是只读的,但可以通过定义 set 方法实现可写性。

computed: {
  fullName: {
    get() {
      return `${this.firstName} ${this.lastName}`
    },
    set(newValue) {
      const [first, last] = newValue.split(' ')
      this.firstName = first
      this.lastName = last
    }
  }
}

调用 this.fullName = 'Jane Smith' 会触发 set 方法,更新 firstNamelastName

computed 与 methods 的区别

  • 计算属性 (computed):基于依赖缓存,适合复杂计算或频繁访问的数据。
  • 方法 (methods):每次调用都会重新执行,适合需要实时计算的场景。
methods: {
  getFullName() {
    return `${this.firstName} ${this.lastName}`
  }
}

getFullName() 每次调用都会执行,而 computedfullName 会缓存结果。

在 Vue 3 中使用 computed

Vue 3 的 Composition API 通过 computed 函数实现计算属性。

import { ref, computed } from 'vue'

const firstName = ref('John')
const lastName = ref('Doe')
const fullName = computed(() => `${firstName.value} ${lastName.value}`)

fullName 会响应 firstNamelastName 的变化。

computed 的依赖追踪

计算属性会自动追踪所有在计算过程中使用的响应式数据。如果依赖的数据未被使用(如条件分支中未执行的代码),则不会触发更新。

computed vue 实现

computed: {
  example() {
    if (this.flag) {
      return this.dataA // 仅当 flag 为 true 时依赖 dataA
    }
    return this.dataB
  }
}

性能优化建议

  • 避免在 computed 中执行高开销操作(如循环或异步请求)。
  • 拆分复杂计算为多个 computed 属性,提高可读性和维护性。
  • 在 Vue 3 中,使用 computed 的缓存特性减少不必要的渲染。

标签: computedvue
分享给朋友:

相关文章

vue实现建模

vue实现建模

Vue 实现建模的方法 在 Vue 中实现建模通常涉及数据绑定、组件化和状态管理。以下是几种常见的方法: 数据驱动建模 Vue 的核心是数据驱动视图。通过定义数据模型,Vue 会自动更新 DOM。例…

vue实现fullpage

vue实现fullpage

Vue 实现 FullPage 效果 在 Vue 中实现全屏滚动(FullPage)效果可以通过多种方式完成,以下是几种常见的方法: 使用现有库 vue-fullpage.js 安装 vue-ful…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue 2…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <tem…

vue实现影院

vue实现影院

Vue实现影院功能的基本思路 使用Vue框架开发影院功能需要结合前端组件化开发、状态管理以及后端API交互。以下是关键实现步骤: 影院页面布局设计 影院页面通常分为顶部导航栏、影院列表区域和底部导航…

vue实现加载

vue实现加载

Vue 实现加载功能的方法 使用 v-if 或 v-show 控制加载状态 通过数据绑定控制加载动画的显示与隐藏。v-if 会完全移除 DOM 元素,v-show 只是切换 display 属性。…