当前位置:首页 > 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: {
  example() {
    if (this.flag) {
      return this.dataA // 仅当 flag 为 true 时依赖 dataA
    }
    return this.dataB
  }
}

性能优化建议

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

computed vue 实现

标签: computedvue
分享给朋友:

相关文章

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript…

vue实现旋转

vue实现旋转

Vue 实现旋转效果的方法 在 Vue 中实现旋转效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 动画 通过 Vue 的 :class 或 :style 绑定 CSS 动画实现旋转效…

vue实现编辑

vue实现编辑

Vue 实现编辑功能 在 Vue 中实现编辑功能通常涉及表单绑定、状态管理和事件处理。以下是一个常见的实现方法: 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定: <…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…