一、什么是监听器

Vue提供了一个watch选项,提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步代码或者开销比较大的操作时,这个方式是最有用的。

二、普通监听

普通监听是简单的数据类型:数字,布尔值,字符串
写法一:设有两个参数,一个是新的数据,一个是旧的数据

el:
data:
watch:{
要监听的变量名称:function(newVal,oldVal){},
要监听的变量名称N(newVal,oldVal){...}
}

写法二:在监听器中,被监听的变量除了可以写成函数,还可以是一个对象

  el:
data:
watch:{
要监听的变量名称:{handler:function(newVal,oldVal){...}}}
watch:{msg:{handler(new,old){console.log('msg 被改变了,原来的值是:'+old+',新的值是'+new)
}}}

在watch监听器中写的内容就是要监听的变量名(变化之后的值,变化之前的值),只要监听的值发生了变化,那么监听器中的函数就会被触发。

三、深度监听

watch里面msg(){ }这种形式只是浅监听,只适合监听一层,如果想监听对象或者数组内部的值,这种形式就不适合了,这个时候需要深度监听,deep属性,它的默认值是false

 new Vue({el:"#app",data:{msg:{name:'sherlock'}},watch:{msg:{// handler是固定的配置选项,不能改变它的名称handler:function(){console.log('msg改变了...')},deep:true//显式的改为true,表示要进行深度监听}}})

四、计算属性与监听的区别:

因为计算属性也是实时变化,那么监听和它什么区别呢

1.监听是在数据发生变化时才会触发对应的函数

2.计算属性在页面中使用了其结果或者依赖的数据发生变化的时候就会触发对应的函数

3.计算属性是基于变量的值进行缓存的,只要在他关联的变量值发生变化时计算属性就会重新执行,这意味着只要价格和数量信息不发生变化,计算属性就会返回之前的计算结果,而不必再次执行函数,而methods没有缓存,所以每次访问都会重新执行。

Vue 学习——监听器(侦听器):普通监听和深度监听相关推荐

  1. Java事件侦听器函数_SWT 计算器 按钮事件监听 获取按钮text值

    用swt插件做计算器,监听所有按钮.通过按钮text值判断哪个按钮被点击,如"0"按钮被点击,就在text框里加个0.现在问题是怎样在监听函数里得到button的text值.10个 ...

  2. 【前端——vue】:过滤器、侦听器、计算属性、vue-cli、vue组件、动态组件、插槽、自定义属性、路由

     一.过滤器 1.过滤器Filters(只能在vue2中使用) p标签里面看到的是后面函数的返回值,message相当于作为参数传给后面.竖线代表要调用过滤器. 过滤器函数必须定义到filters节点 ...

  3. 侦听器watch及其和计算属性、methods方法的总结

    目录 一.watch侦听器 二.侦听器的处理函数 解决深度监听新老值同源问题 三.侦听器的格式 1. 方法格式的侦听器 2.对象格式的侦听器 四.侦听器watch.计算属性.methods方法的总结 ...

  4. vue过滤器和侦听器和计算属性

    过滤器和侦听器和计算属性 1. 过滤器 1.1基本用法 1.2私有过滤器和全局过滤器 1.3 Dayjs 1.4 连续调用多个过滤器 1.5 过滤器传参 1.6 兼容性 2. watch 侦听器 2. ...

  5. Vue:实例演示,v-if,v-for,v-model,v-bind,v-on,计算属性和侦听器属性

    Vue:实例演示,v-if,v-for,v-model,v-bind,v-on,计算属性和侦听器属性 一.实例演示,v-if,v-for,v-model,v-bind,v-on 方法 含义 v-bin ...

  6. web前端面试高频考点——Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM)

    系列文章目录 内容 参考链接 Vue基本使用 Vue的基本使用(一文掌握Vue最基础的知识点) Vue通信和高级特性 Vue组件间的通信及高级特性(多种组件间的通信.自定义v-model.nextTi ...

  7. vue中如何深度监听一个对象?

    大家都知道,Vue项目中对数据的监听,提供了一个很好的钩子watch,watch可以极其方便的监听我们常用数据类型值的变化,但通常当我们想监听一个对象中,某个属性值的变化时,很难达到我们预期的效果.那 ...

  8. Vue学习随笔+商城项目【上】

    更新日期:2021-02-10 晚 [新年快乐] 附:Vue学习随笔+商城项目[下] 目录(部分) (一)ES6补充 1.1块级作用域 1.1.1 什么是变量作用域 1.1.2 没有块级作用域造成的问 ...

  9. vue修改计算属性的值_「Vue学习记录五」计算属性和侦听器

    1: 计算属性: (内置缓存机制) 当更改age的时候, fullName 函数不执行: 当更改fristName的时候, fullName 函数才执行 <div id = "app& ...

最新文章

  1. jQuery 技术揭秘
  2. Bytes int java_Java Bytes.readInt方法代码示例
  3. C语言位、字节、半字、字的概念和内存位宽
  4. 如何在OS X中打开或关闭鼠标定位器
  5. 游戏建模用什么软件,学游戏建模哪里好?
  6. idea展示runDashboard的窗口
  7. linux系统端口更换,在Linux中怎样修改httpd的端口号
  8. 毛笔日常保养注意事项
  9. Pytorch nn.functional.pad()的简单用法
  10. opencv 有无判断 模板匹配_opencv模板匹配
  11. 【Leetcode 687】递归求最大相同路径
  12. angular同源策略禁止读取_Redis5.0数据淘汰策略详解(最新版本,面试常问)
  13. 微信小程序之各类文件下载保存到本地
  14. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(一)
  15. 页面布局的方式有哪些?
  16. 希望我这是最后一次谈SaaS
  17. 【Grace卫星】Grace卫星精度知识点。
  18. 一个IT售前咨询顾问是如何工作和生活的?
  19. HAUT 1262 魔法宝石 (最短路变形 or 暴力)
  20. aes 和 rsa

热门文章

  1. VVC/H.266代码阅读(VTM8.0)(三. Slice到CTU的处理 )
  2. C语言新手入门|初始C语言
  3. 大数据同步工具Canal
  4. 编译64位linux内核,为树莓派4编译64位的内核
  5. 服务了可口可乐、海底捞、某头部商业银行,我有这些体会
  6. ULINK的手动刷新固件
  7. 如何让收到的邮件附件自动储存在Sharepoint里
  8. HTC U11 EYEs刷机包 HTC U11 EYEs原厂系统维修线刷包msm8976含教程
  9. matlab gui做输入,用户在matlab GUI中的输入
  10. (PCB系列二)AD20添加元件3D库