千家信息网

vue中如何利用watch监听数据变化

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍"vue中如何利用watch监听数据变化"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"vue中如何利用watch监听数据变化"文章能帮助大家解
千家信息网最后更新 2025年01月23日vue中如何利用watch监听数据变化

这篇文章主要介绍"vue中如何利用watch监听数据变化"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"vue中如何利用watch监听数据变化"文章能帮助大家解决问题。

1、watch使用的几种方法

(1)通过watch监听data数据的变化,数据发生变化时,就会打印当前的值

watch: {  data(val, newval) {    console.log(val)    console.log(newval)  } }

(2)通过watch监听docData数据的变化,数据发生变化时,this.change_number++(使用深度监听)

watch: {  docData: {   handler(newVal) {    this.change_number++   },   deep: true  }}

(3)通过watch监听data数据的变化,数据发生变化时,执行changeData方法

watch: {  data: 'changeData' // 值可以为methods的方法名},methods: {   changeData(curVal,oldVal){      conosle.log(curVal,oldVal)  }}

2、详解watch中的immediate、handler和deep属性

(1)immediate和handler

这样使用watch时有一个特点,就是当值第一次绑定时,不会执行监听函数,只有值发生改变时才会执行。如果我们需要在最初绑定值的时候也执行函数,则就需要用到immediate属性。

eg:

watch: {   docData: {    handler(newVal) {      this.change_number++    },    immediate: true   }}

(2)deep

当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,此时就需要deep属性对对象进行深度监听。

eg:data() {  return {    docData: {      'doc_id': 1,      'tpl_data': 'abc'    }  }},watch: {   docData: {    handler(newVal) {      this.change_number++    },    deep: true  }  }

设置deep:true则可以监听到docData.doc_id的变化,此时会给docData的所有属性都加上这个监听器,当对象属性较多时,每个属性值的变化都会执行handler。如果只需要监听对象中的一个属性值,则可以做以下优化:使用字符串的形式监听对象属性:

eg:data() {  return {    docData: {      'doc_id': 1,      'tpl_data': 'abc'    }  }},watch: {  'docData.doc_id': {    handler(newVal, oldVal) {      ......    },    deep: true  }  }

关于"vue中如何利用watch监听数据变化"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

0