Vue 中的 computed 和 watch 的区别-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

引言

Vue.jscomputedwatch是两个常用的属性用于处理数据的监听和响应。它们在功能上有一些相似之处但也有一些重要的区别。本文将介绍computedwatch的区别并提供相关的代码示例。

使用computed 和 watch 的好处
Vue 中的 computed 和 watch 都是用来观察数据变化的但它们的用途和特点略有不同。

computed 是一个计算属性它根据已有的数据计算出一个新的值并将这个值缓存起来只有当依赖的数据发生变化时才会重新计算。computed 的好处有


1、简洁方便computed 计算属性的定义方式和普通属性一样不需要额外的方法调用。
2、自动缓存computed 的计算结果会被缓存起来只有当依赖的数据发生变化时才会重新计算减少了重复计算的开销。
3、响应式computed 的计算结果是响应式的当依赖的数据发生变化时会自动更新计算结果并触发相关的视图更新。
 

watch 是一个观察者它可以监听一个数据的变化并在数据变化时执行相应的回调函数。watch 的好处有

  1. 灵活性watch 可以监听任意数据的变化不限于计算属性的依赖关系。
  2. 异步操作watch 可以执行异步操作比如发送网络请求或者执行复杂的计算。
  3. 更深入的监听watch 可以监听对象或数组的变化并通过深度监听选项来实现。

1. computed 属性

computed属性用于定义一个计算属性它根据其他属性的值计算出一个新的值。计算属性是基于它们的依赖进行缓存的只有当依赖发生变化时计算属性才会重新计算。

下面是一个使用computed属性的示例

new Vue({
  data: {
    firstName: 'John',
    lastName: 'Doe'
  },
  computed: {
    fullName: function() {
      return this.firstName + ' ' + this.lastName;
    }
  }
});

在上面的代码中我们定义了一个computed属性fullName它根据firstNamelastName的值计算出一个完整的姓名。每当firstNamelastName的值发生变化时fullName会自动更新。

2. watch 属性

watch属性用于监听一个属性的变化并在变化发生时执行相应的操作。与computed不同watch属性是一个对象需要为要监听的属性提供一个处理函数。

下面是一个使用watch属性的示例

new Vue({
  data: {
    firstName: 'John',
    lastName: 'Doe',
    fullName: ''
  },
  watch: {
    firstName: function(newVal, oldVal) {
      this.fullName = newVal + ' ' + this.lastName;
    },
    lastName: function(newVal, oldVal) {
      this.fullName = this.firstName + ' ' + newVal;
    }
  }
});

在上面的代码中我们定义了两个watch属性分别监听firstNamelastName的变化。每当firstNamelastName的值发生变化时相应的处理函数会被调用并更新fullName的值。

3. computed 和 watch 的区别
computed和watch在功能上有一些相似之处都可以用于监听属性的变化并执行相应的操作。然而它们之间也有一些重要的区别

computed是基于它们的依赖进行缓存的只有当依赖发生变化时计算属性才会重新计算而watch则是在属性变化时立即执行相应的操作。
computed适用于那些需要根据其他属性计算出一个新值的场景而watch适用于那些需要在属性变化时执行异步或开销较大的操作的场景。
computed可以像属性一样直接访问而不需要调用函数而watch则需要定义处理函数并在函数中执行相应的操作。

结论
在Vue.js中computed和watch是两个常用的属性用于处理数据的监听和响应。computed适用于那些需要根据其他属性计算出一个新值的场景而watch适用于那些需要在属性变化时执行异步或开销较大的操作的场景。了解它们的区别和适用场景能够帮助我们更好地使用Vue.js进行开发。

希望本文对你理解Vue中的computed和watch的区别有所帮助如果你对这些内容有任何疑问或需要进一步的帮助请随时提问。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: vue