Vue: computed和watch

Posted 长不大的大灰狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue: computed和watch相关的知识,希望对你有一定的参考价值。

Vue: computed和watch

一、监听属性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)

以上是关于Vue: computed和watch的主要内容,如果未能解决你的问题,请参考以下文章

Vue—实例成员computed和watch

Vue中computed和watch的区别

Vue中computed和watch的区别

vue计算属性与watch监听

vue 中的computed 和 watch 监听

vue3中的computed和watch