当前位置:首页 > VUE

computed vue 实现

2026-03-07 03:17:37VUE

computed 的基本用法

在 Vue 中,computed 用于声明计算属性,基于响应式依赖进行缓存计算。当依赖的响应式数据变化时,计算属性会自动重新计算。

const app = Vue.createApp({
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    }
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName
    }
  }
})

computed 的 setter 和 getter

计算属性默认只有 getter,但也可以提供 setter 用于在需要时修改依赖的数据。

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

computed 与 methods 的区别

计算属性基于响应式依赖进行缓存,只有当依赖发生变化时才会重新计算。methods 每次调用都会执行函数。

computed vue 实现

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

computed 在 Composition API 中的使用

在 Vue 3 的 Composition API 中,使用 computed 函数创建计算属性。

import { ref, computed } from 'vue'

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

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

  return {
    fullName
  }
}

computed 的响应式依赖

计算属性会自动追踪响应式依赖,当这些依赖发生变化时,计算属性会重新计算。

computed vue 实现

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

computed 的性能优化

由于计算属性会缓存结果,只有当依赖变化时才重新计算,因此比在模板中使用复杂表达式或频繁调用 methods 更高效。

computed: {
  filteredItems() {
    return this.items.filter(item => item.isActive)
  }
}

computed 的异步操作

计算属性默认不支持异步操作,需要结合其他 API 如 async/await 或使用 watch 来实现。

computed: {
  asyncComputed: {
    get() {
      return Promise.resolve('Async Value')
    },
    set() {}
  }
}

标签: computedvue
分享给朋友:

相关文章

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键词…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现机制

vue实现机制

Vue 实现机制的核心原理 Vue.js 的核心实现机制主要基于响应式系统、虚拟 DOM 和组件化设计。以下是关键实现细节: 响应式系统 Vue 通过 Object.defineProperty(V…

vue实现fullpage

vue实现fullpage

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

vue实现groupbox

vue实现groupbox

Vue 实现 GroupBox 组件 在 Vue 中实现类似 GroupBox 的效果可以通过自定义组件完成。GroupBox 通常是一个带有标题的边框容器,用于将相关控件分组显示。 基本实现方法…

vue 实现工具

vue 实现工具

Vue 实现工具的方法 使用 Vue 实现工具功能可以通过多种方式完成,具体取决于工具的类型和需求。以下是几种常见的方法: 组件化实现 创建一个独立的 Vue 组件来封装工具功能。例如,实现一个计…