• vue的watch使用 监听数据变化


    凑一篇文章 咳咳 详细解读一下vue的监听属性

    watch监听的对象可以是某个已存在的值:只要这个值改变就触发当前方法。这个函数可以有两个形参,第一个是当前的值,第二个是变化后的值;当然也可以没有,下面依次类推
    watch监听的对象可以是函数:当我们监听的数据发生变化时,需要执行的函数,后半句同上。
    watch监听的对象也可以是method中的函数名:函数名要用引号来包裹。
    watch监听的对象也可以是computed中的值:计算就改动。
    watch监听的也可以是包括选项的对象

    {
    1,第一个值handle:其值是一个回调函数,就是监听对象对话的时候需要执行的函数
    2,第二个值deep:其值true 或者 false,是否深度监听(一般监听是不能监听到对象属性值变化的,数组除外)
    3,第三个值immediate:其值 true 或者 false,是否以当前的初始值执行handle函数(当值第一次绑定时,不会执行监听函数,只有值发生改变时才会执行。如果我们需要在最初绑定值的时候也执行函数,则就需要用到immediate属性。)。
    }

    1)通过watch监听data数据的变化,数据发生变化时,就会打印当前的值
    
    watch: {
      data(val, newval) {
        console.log(val)
        console.log(newval)
      }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    watch: {
      data() {
        console.log('改变')
      }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2)通过watch监听docData数据的变化,数据发生变化时,this.change_number++(使用深度监听)
    
    watch: {
      docData: {
       handler(newVal) {
        this.change_number++
       },
       deep: true,
      immediate: false,
    
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    3)通过watch监听data数据的变化,数据发生变化时,执行changeData方法
    
    watch: {
      data: 'changeData' // 值可以为methods的方法名
    },
    methods: {
       changeData(curVal,oldVal){
          conosle.log(curVal,oldVal)
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    4)通过watch监听data里对象的变化,数据发生变化时,执行changeData方法
    data() {
        return {
          aaa: "first",
          bbb: "{
    		ccc:1,
    		ddd:2
    		}"
        };
      },
    watch: {
      'bbb'{
      		//也可以没有入参
       		handler(newValue,oldValue){
                            console.log('属性isHot被修改了',newValue,oldValue);
                 	},
            mmediate:true,  // 该参数设置为true,可以在初始化的时候让handler调用一下    
      		deep:true	// 该参数设置为true,可以监听到对象内的属性 而不止于当前对象
    		'触发执行'
    	}// 值可以为bbb的对象名
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    简写
    算了没啥简写
    就是没有 mmediate deep 这俩属性的 入参都没有的 都可以
    例如

    watch: {
      docData(){
      	// docData动了就执行
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

     app.$watch('isHot',function(newValue,oldValue){
                console.log('属性isHot被修改了',newValue,oldValue);
            })
    
    • 1
    • 2
    • 3

    这样也行 (上面app是当前vue所挂载的的实例)

  • 相关阅读:
    2.3、传输方式
    数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命
    ubuntu 18.04换内核后找不到 /dev/ttyUSB0问题
    Maven的常用命令
    HTML动画效果技术指南:打造引人注目的网页悬浮体验
    【React + Ant Design】表单如何在前置项未填写时禁止后置项交互并提示
    [附源码]计算机毕业设计JAVAjsp游乐园管理系统
    数据抽取+dataworks的使用+ADB的应用
    Python-flask高级使用
    寒气难抵,跨境电商年底仍有一批卖家要出局!
  • 原文地址:https://blog.csdn.net/zsq199771/article/details/125481011