vue中的watch监听

  1. 第一个handler:其值是一个回调函数。即监听到变化时应该执行的函数。
  2. 第二个是deep:其值是true或false;确认是否深入监听。(一般监听时是不能监听到对象属性值的变化的,数组的值变化可以听到。)
  3. 第三个是immediate:其值是true或false;确认是否以当前的初始值执行handler的函数。
  4. 当父组件向子组件动态传值时,子组件props首次获取到父组件传来的默认值时,也需要执行函数,此时就需要将immediate设为true
  5. immediate:true代表如果在 wacth 里声明了 viewDetials之后,就会立即先去执行里面的handler方法,如果为 false就跟我们以前的效果一样,不会在绑定的时候就执行

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

watch: {data(val, value) {console.log(val)    //变化之前的值console.log(value)    //变化之后的值}
}

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

data() {return {list: {'id': 1,'type': 0},number: 0}
},
watch: {list: {handler(newVal) {this.number++},deep: true}
}

3. 通过 watch 监听 data 数据的变化,数据发生变化时,执行 change 方法,watch()监听某个值(双向绑定)的变化,一旦发生变化,就调用引号里的方法,从而达到change事件监听的效果!!

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

data() {return {list: {'id': 1,'type': 0},number: 0}
},
watch: {list: {handler(newVal) {this.number++},immediate: true}
}

5. watch是一个对象,一定要当成对象来用。 对象就有键,有值,deep 当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,此时就需要deep属性对对象进行深度监听。

data() {return {list: {'id': 1,'type': 0},number: 0}
},
watch: {list: {handler(newVal) {this.number++},deep: true}
}

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

data() {return {list: {'id': 1,'type': 0}}
},
watch: {'list.id': {handler(newVal, oldVal) {......},deep: true}
}data() {return {list: {'id': 1,'type': 0},number: 0}
},
watch: {list: {handler(newVal) {this.number++},immediate: true}
}

在大佬们的总上在总结一些https://blog.csdn.net/weixin_45449504/article/details/116132134

watch中的immediate、handler和deep属性相关推荐

  1. Vue.js中 watch(深度监听-deep)原理以及详解

    handler方法和immediate属性 这里 watch 的一个特点是,最初绑定的时候是不会执行的,要等到 firstName 改变时才执行监听计算.那我们想要一开始就让他最初绑定的时候就执行改怎 ...

  2. Vue中的(computed)计算属性和(watched)侦听属性以及(methods)方法

    1. computed 计算属性可用于快速计算视图中显示的属性. 这些计算将被缓存,并且只在需要时更新. 他的方法不需要在data里面定义 它们完全是同步的. <div class=" ...

  3. 理解vue中less的scoped和/deep/工作原理

    理解vue中less的scoped和/deep/工作原理 scoped /deep/ 实战 总结 scoped vue项目一般是单页面.多组件,整个项目共用一个css样式表,有时候我们在写组件的过程中 ...

  4. DHTML中style的display和visibility属性

    DHTML中style的display和visibility属性 display是隐藏该对象,使该对象不占用页面排版空间. document.all("tr1").style.di ...

  5. 请确保此代码文件中定义的类与“inherits”属性匹配,并且该类扩展的基类(例如Page 或UserControl)是正确的。...

    编译ASP.NET时,提示"请确保此代码文件中定义的类与"inherits"属性匹配,并且该类扩展的基类(例如Page 或UserControl)是正确的.", ...

  6. 如何在Javascript中访问对象的第一个属性?

    本文翻译自:How to access the first property of an object in Javascript? Is there an elegant way to access ...

  7. python中的os.mkdir和os.makedirs的使用区别,以及如何查看某个模块中的某些字母开头的属性方法

    1 os.mkdir的使用 os.mkdir(dir_name):用于新建文件夹,当要新建的文件夹已经存在的时候,就会报错:FileExistsError: [Errno 17] File exist ...

  8. 怎么在ASP.NET中写HTML,如何:在 ASP.NET 网页中设置控件的 HTML 属性

    如何:在 ASP.NET 网页中设置控件的 HTML 属性 10/22/2014 本文内容 更新:2007 年 11 月 这些示例显示如何向页面中的元素添加 HTML 属性.第一个示例演示如何以声明方 ...

  9. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 继承 BuilderSupport 抽象类 | 在 createNode 方法中获取节点名称、节点属性、节点值信息 )

    文章目录 一.继承 BuilderSupport 抽象类 二.在 createNode 方法中获取节点名称.节点属性.节点值信息 三.完整代码示例 1.MyBuilderSupport 生成器代码 2 ...

最新文章

  1. Filebeat的下载(图文讲解)
  2. Asp.NET 中 Ajax 的配置使用
  3. 台式计算机配置清单及价格,电脑配置清单及价格
  4. redis(2)--数据结构与对象
  5. jQuery中this与$(this)区别
  6. 高并发之服务降级和服务熔断____服务降级、熔断、限流的区别
  7. 常用机器学习算法优缺点及其应用领域
  8. python自动化办公入门书籍-Python如此神奇,让繁琐工作自动化 (文中含Python基础)...
  9. Linux查看当前系统的版本信息
  10. 雪花算法详解及存在问题
  11. Windows下程序猿开发利器
  12. ITIL学习笔记——核心流程之:IT服务连续性管理
  13. java zhs16gbk_oracle 修改字符集 为ZHS16GBK
  14. 面试一次问一次,HashMap是该拿下了(二)
  15. word删除任意单个字符_如何从Word中的单个页面中删除页眉或页脚
  16. 2020蓝桥杯模拟赛题目解析(上)
  17. ar8031网卡中的光口和电口相互切换
  18. CPU 100%排查及常见案例
  19. 利用SAS软件制作报表的常用手法
  20. 【免费制作电子杂志】云展网教程 | 上传双页的PDF文档进行切割使杂志单页显示?

热门文章

  1. 关于背景颜色未完全铺满的情况
  2. vim 中批量添加注释
  3. 软件测试——功能测试:边界值测试
  4. js 余数 取_js取整数、取余数
  5. 第一类错误第二类错误
  6. cubemx 读卡器_STM32CubeMX基于SD卡的FATFS文件系统测试
  7. Hibernate的DAO实现
  8. 易语言创建线程挂起线程恢复线程销毁线程
  9. 玫琳凯首席法务官兼首席多元化官Julia Simon在2021年国际妇女节当日发表声明
  10. python输出当前时间戳_如何在Python中获取当前时间戳?