当前位置:首页 > VUE

vue组件实现computed

2026-02-19 01:56:29VUE

Vue 组件中实现 computed 的方法

在 Vue 组件中,computed 是一种基于响应式依赖进行缓存的属性。它适用于需要根据其他数据动态计算的场景,且仅在依赖发生变化时重新计算。

基本用法

在 Vue 选项式 API 中,computed 是一个对象,其属性是计算属性的名称,值为一个函数或包含 getset 的对象。

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

带有 getter 和 setter 的计算属性

如果需要设置计算属性,可以使用包含 getset 的对象。

vue组件实现computed

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

在组合式 API 中使用 computed

在 Vue 3 的组合式 API 中,computed 是一个函数,可以通过 import { computed } from 'vue' 引入。

import { ref, computed } from 'vue'

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

    const fullName = computed(() => {
      return `${firstName.value} ${lastName.value}`
    })

    const editableFullName = computed({
      get: () => `${firstName.value} ${lastName.value}`,
      set: (newValue) => {
        const [first, last] = newValue.split(' ')
        firstName.value = first
        lastName.value = last
      }
    })

    return { firstName, lastName, fullName, editableFullName }
  }
}

计算属性的缓存特性

计算属性会基于其依赖的响应式数据缓存结果。只有当依赖的数据发生变化时,计算属性才会重新计算。这种特性可以避免不必要的计算开销。

vue组件实现computed

export default {
  data() {
    return {
      items: [1, 2, 3, 4, 5]
    }
  },
  computed: {
    filteredItems() {
      console.log('Computing filtered items')
      return this.items.filter(item => item > 2)
    }
  }
}

计算属性 vs 方法

计算属性适合用于需要缓存的复杂计算,而方法适合用于不需要缓存或需要传递参数的场景。

export default {
  data() {
    return {
      items: [1, 2, 3, 4, 5]
    }
  },
  computed: {
    computedFilter() {
      return this.items.filter(item => item > 2)
    }
  },
  methods: {
    methodFilter() {
      return this.items.filter(item => item > 2)
    }
  }
}

计算属性的依赖跟踪

计算属性会自动跟踪其依赖的响应式数据。如果依赖的数据未发生变化,计算属性会直接返回缓存的结果。

export default {
  data() {
    return {
      a: 1,
      b: 2
    }
  },
  computed: {
    sum() {
      return this.a + this.b
    }
  }
}

标签: 组件vue
分享给朋友:

相关文章

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的 :…

vue实现标签

vue实现标签

Vue 实现标签的方法 在 Vue 中实现标签功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 动态组件可以根据不同的条件渲染不同的标签内容。通过 :is 属性动态绑定组件名,实现标签…

vue最佳实现

vue最佳实现

Vue 最佳实践 组件设计 组件应遵循单一职责原则,每个组件只负责一个功能模块。命名采用 PascalCase(如 UserProfile.vue),模板中使用 kebab-case(如 <us…

vue实现复制

vue实现复制

Vue 实现复制功能 在 Vue 中实现复制功能可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 Clipboard API Clipboard API 是现代浏览器提供的一种原生 AP…

vue实现数据

vue实现数据

Vue 实现数据绑定的方法 Vue.js 提供了多种方式实现数据绑定,包括双向绑定、单向绑定以及动态数据绑定。以下是几种常见的实现方式: 双向数据绑定(v-model) 双向数据绑定通常用于表单元素…

vue怎样实现mvvm

vue怎样实现mvvm

Vue 实现 MVVM 的原理 Vue 的 MVVM(Model-View-ViewModel)模式通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 MVVM 的核心机制: 数…