Watch概述

    一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。

简单的监听
<body>
<div id="app"><input type="text" v-model="num">
</div>
<script src="vue.js"></script>
<script>new Vue({el: '#app',data: {num: ''},watch: {num(newVal, oldVal) {// 监听 num 属性的数据变化// 作用 : 只要 num 的值发生变化,这个方法就会被调用// 第一个参数 : 新值// 第二个参数 : 旧值,之前的值console.log('oldVal:',oldVal)console.log('newVal:',newVal)}}})
</script>
</body>
immediate(立即处理 进入页面就触发)
<body>
<div id="app"><input type="text" v-model="num">
</div>
<script src="vue.js"></script>
<script>new Vue({el: '#app',data: {num: 1},watch: {num: {// 数据发生变化就会调用这个函数  handler(newVal, oldVal) {console.log('oldVal:', oldVal)console.log('newVal:', newVal)},// 立即处理 进入页面就触发immediate: true}}})
</script>
</body>
deep(深度监听)

    对象和数组都是引用类型,引用类型变量存的是地址,地址没有变,所以不会触发watch。这时我们需要进行深度监听,就需要加上一个属性 deep,值为 true

<body>
<div id="app"><input type="button" value="更改名字" @click="change">
</div>
<script src="vue.js"></script>
<script>new Vue({el: '#app',data: {food: {id: 1,name: '冰激凌'}},methods: {change() {this.food.name = '棒棒糖'}},watch: {// 第一种方式:监听整个对象,每个属性值的变化都会执行handler// 注意:属性值发生变化后,handler执行后获取的 newVal 值和 oldVal 值是一样的food: {// 每个属性值发生变化就会调用这个函数handler(newVal, oldVal) {console.log('oldVal:', oldVal)console.log('newVal:', newVal)},// 立即处理 进入页面就触发immediate: true,// 深度监听 属性的变化deep: true},// 第二种方式:监听对象的某个属性,被监听的属性值发生变化就会执行函数// 函数执行后,获取的 newVal 值和 oldVal 值不一样'food.name'(newVal, oldVal) {console.log('oldVal:', oldVal)   // 冰激凌console.log('newVal:', newVal)   // 棒棒糖}}})
</script>
</body>

Watch和computed的区别

  1. computed支持缓存,只有依赖数据发生改变,才会重新进行计算;而watch不支持缓存,数据变,直接会触发相应的操作
  2. computed不支持异步,当computed内有异步操作时无效,无法监听数据的变化,而watch支持异步
  3. computed属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值;而watch监听的函数接收两个参数,第一个参数是最新的值,第二个参数是输入之前的值
  4. 如果一个属性是由其它属性计算而来的,这个属性依赖其它属性,多对一或者一对一,一般用computed;而当一个属性发生变化时,需要执行对应的操作,一对多,一般用watch

vue中watch的详解相关推荐

  1. vue中mint-ui使用详解

    这次给大家带来vue中mint-ui使用详解,vue中mint-ui使用的注意事项有哪些,下面就是实战案例,一起来看一下. mint-ui在vue中的使用,供大家参考,具体内容如下 首先放上mint- ...

  2. jq的插件 vue中引用_详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件

    本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件,具有一定的参考价值,有兴趣的可以了解一下 使用vue-cli构建的vue项目,webpack的配置文 ...

  3. 在vue中引入css,详解在Vue中有条件地使用CSS类

    详解在Vue中有条件地使用CSS类 2019-01-07 编程之家 https://www.jb51.cc 编程之家收集整理的这篇文章主要介绍了详解在Vue中有条件地使用CSS类,编程之家小编觉得挺不 ...

  4. Vue中$refs 使用详解

    js中想要获取dom节点一般用document.querySelecto('.input'),然后获取input的值. 在vue中绑定ref就不需要在获取dom节点了,直接绑定在input上,然后 $ ...

  5. php watcher,vue 中的 watcher详解

    虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的 watcher .这是为什么 Vue 提供一个更通用的方法通过watch 选项,来响应数据的变化.当你想要在数据变化响应时,执行异步操作或开 ...

  6. Vue中的v-slot详解,作用域插槽和具名插槽

    1.具名插槽 有时候我们希望在指定的位置输出我们的子元素,这时候具名插槽就排上了用场. //组件调用时 <MyFooter v-red :age.sync="age"> ...

  7. 关于Vue中props的详解

    看一下官方文档: 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据.父组件的数据需要通过 prop 才能下发到子组件中. 也就是props是子组件访问父组件数 ...

  8. Vue学习:Vue中的路由详解(完整版)

    一.vue-router的理解 首先,需要理解一下vue-router: vue-router是vue的一个插件,专门用来实现SPA应用.SPA也就是单页Web应用,特点是:整个应 用只有一个完整的页 ...

  9. Vue中过滤器用法详解

    一.什么是过滤器 Vue.js官方文档说明:可被用于一些常见的文本格式化. 个人理解就是把一些不需要的东西过滤掉,只是对数据进行加工处理然后返回处理后的数据,和计算属性很相似. 二.如何使用过滤器 过 ...

最新文章

  1. LeetCode简单题之找出数组排序后的目标下标
  2. CheckM——国家微生物科学数据中心云工具
  3. 必看!清华大学刘洋教授“浅谈研究生学位论文选题”方法,3月7日1小时视频公开课(附视频PPT下载)...
  4. 【PAT (Advanced Level) Practice】1054 The Dominant Color (20 分)
  5. 2017-10-9(Volley使用范例源码分析)
  6. Linux下文件描述符
  7. SpringBoot的配置文件加载顺序和使用方式
  8. 如何开始使用centos_如何开始使用CentOS
  9. 简单的TensorFlow分类教程
  10. linux yum 目录在哪,急问怎么知道yum从哪个地址下载的文件呢?
  11. R2: 相关系数、复相关系数及半偏相关系数之间的联系
  12. universe是什么牌子_【寰宇影视】品牌介绍→寰宇电影_寰宇娱乐_买购网
  13. 计算机硬件故障的相关知识,电脑常见硬件故障大全
  14. Mapped Statements collection does not contain ... Mybatis报错解决
  15. LIO-SAM论文翻译
  16. Kate Spade_百度百科
  17. 做微信小程序需要ICP证书吗
  18. Excalidraw:开源趣味画图工具(在线和本地均可)
  19. qt5 qtablewidget 某一列下划线可修改_2021年中小学寒假时间安排一览表(内附期末考复习攻略,可打印!)...
  20. 3-10 Pandas的数据规整

热门文章

  1. putty连接设备时报错 Can’t agree a key change algorithm
  2. python人工智能面试题爱奇艺面试题_【爱奇艺Python面试】爱奇艺大数据面试 python-看准网...
  3. 小学计算机教学打字,怎么快速学拼音打字-小学生如何更快的学习拼音
  4. QQ Account
  5. 昆明新迎万枫、菏泽希尔顿花园酒店​开业;万豪在华运营酒店超过400家 | 中国酒店周刊...
  6. 26岁从财务转行软件测试,4年沉淀我已经是25k的测开工程师...
  7. SB_5_瑞吉外卖_4_文件上传下载_菜品新增_菜品分页查询_菜品修改
  8. 画一个带统计检验的PCoA分析结果
  9. 普通运维人员真的就是秋后的蚂蚱吗?
  10. VGG16 VGG19