当前位置:首页 > VUE

vue实现computed

2026-03-27 21:08:49VUE

computed 的基本用法

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

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

computed 的 setter 和 getter

computed 属性默认只有 getter,但也可以提供 setter 以实现双向绑定功能。

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

computed 与 methods 的区别

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

export default {
  data() {
    return {
      counter: 0
    }
  },
  computed: {
    computedCount() {
      return this.counter * 2
    }
  },
  methods: {
    methodCount() {
      return this.counter * 2
    }
  }
}

computed 在 Composition API 中的使用

在 Vue 3 的 Composition API 中,computed 是通过 computed 函数来实现的。

import { ref, computed } from 'vue'

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

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

    return {
      firstName,
      lastName,
      fullName
    }
  }
}

computed 的依赖追踪

computed 属性会自动追踪其依赖的响应式数据。如果依赖的数据没有变化,computed 属性会直接返回缓存的值,而不会重新计算。

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

computed 的异步操作

虽然 computed 属性通常用于同步计算,但也可以通过返回 Promise 来处理异步操作。不过需要注意,这种情况下可能需要结合其他 API(如 async/await)来处理。

vue实现computed

export default {
  data() {
    return {
      userId: 1
    }
  },
  computed: {
    userData() {
      return fetch(`https://api.example.com/users/${this.userId}`)
        .then(response => response.json())
    }
  }
}

标签: vuecomputed
分享给朋友:

相关文章

vue设计与实现 书

vue设计与实现 书

vue设计与实现 书 《Vue.js设计与实现》是一本深入探讨Vue.js框架内部原理和设计思想的书籍,适合希望深入理解Vue.js的开发者。以下是关于这本书的详细信息: 书籍内容 《Vue.js设…

vue实现旋转

vue实现旋转

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

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…

vue实现开关

vue实现开关

Vue 实现开关组件的方法 使用原生HTML和Vue数据绑定 通过v-model绑定复选框的checked状态,结合CSS样式实现开关效果: <template> <label…