Vue: computed和watch

本文探讨了Vue.js中computed计算属性与watch监听属性的对比,包括缓存、异步处理、使用场景和示例。通过实例演示了如何在数据变化时利用watch实时响应,以及如何通过computed进行高效计算。
摘要由CSDN通过智能技术生成

一、监听属性watch
  • 不支持缓存,监听的数据变,就会触发;
  • 支持异步;
  • 监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
  • 监听数据必须是data中声明过或者父组件传递过来的props中的数据
<div>
  <p>FullName: {{fullName}}</p>
  <p>FirstName: <input type="text" v-model="firstName"></p>
</div>

new Vue({
 el: '#root',
 data: {
   firstName: 'hello',
   lastName: 'world',
   fullName: ''
},
watch: {
   firstName(newName, oldName) {
      this.fullName = newName + ' ' + this.lastName;
   }
}
}

handler方法和immediate属性
immediate: 代表在wacth里声明了firstName这个方法之后立即去执行handler方法

watch: {
 firstName: {
  handler(newName, oldName) {
   this.fullName = newName + ' ' + this.lastName;
  },
  immediate: true
 }
}

监听对象中的属性变化

watch: {
 'obj.a': {
  handler(newName, oldName) {
   console.log('obj.a changed');
  },
  immediate: true,
 }
}
二、计算属性computed
  • 支持缓存,依赖的数据发生改变,就会重新进行计算;
  • 不支持异步,当computed内有异步操作时无效,无法监听数据的变化
  • 如果一个属性是由其他属性计算而来的,是一个多对一或者一对一的关系,一般用computed

full_Name= firstName + secName + thirdName
等式右边三个数据任一改变,都会直接修改 full_Name

var vm = new Vue({
 el: '#app',
 data: {
  firstName: 'he',
  secName: 'dong',
  thirdName: 'sheng'
 },
 computed: {
  full_Name: function () {
   return this.firstName + this.secName + this.thirdName
  }
 }
})

vm.thirdName = 'ping'
console.log(vm.full_Name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值