Vue3: 认识侦听器 watch🔥
Hello,又见面了,我是渔戈!
今天我们来讲讲 Vue 的监听器:watch
1.什么是侦听器呢?
开发中我们在 data 返回的对象中定义了数据,这个数据通过插值语法等方式绑定到 template 中
当数据变化时,template 会自动进行更新来显示最新的数据
但是在某些情况下,我们希望在代码逻辑中监听某个数据的变化,这个时候就需要用侦听器 watch 来完成了
1.1 侦听器的用法如下:
选项:watch
类型:{ [key: string]: string | Function | Object | Array}
1.2 侦听器案例
举个栗子:
比如现在我们希望用户在 input 中输入一个问题,每当用户输入了最新的内容,我们就获取到最新的内容,并且使用该问题去服务器查询答案;
那么,我们就需要实时的去获取最新的数据变化;
2.侦听器 watch 的配置选项
我们先来看一个例子:
当我们点击按钮的时候会修改 info.name 的值;
这个时候我们使用 watch 来侦听 info,可以侦听到吗?答案是不可以。
这是因为默认情况下,watch 只是在侦听 info 的引用变化,对于内部属性的变化是不会做出响应的:
这个时候我们可以使用一个选项 deep 进行更深层的侦听;
注意前面我们说过 watch 里面侦听的属性对应的也可以是一个 Object;
还有另外一个属性,是希望一开始的就会立即执行一次:
这个时候无论后面数据是否有变化,侦听的函数都会有限执行一次
2.1 侦听器 watch 的配置选项(代码)
2.2 侦听器 watch 的其他方式(一)
2.3 侦听器 watch 的其他方式(二)
另外一个是 Vue3 文档中没有提到的,但是 Vue2 文档中有提到的是侦听对象的属性:
还有另外一种方式就是使用 $watch 的 API:
我们可以在 created 的生命周期(后续会讲到)中,使用 this.$watchs 来侦听;
第一个参数是要侦听的源;
第二个参数是侦听的回调函数 callback;
第三个参数是额外的其他选项,比如 deep、immediate;
2.4 综合案例
现在我们来做一个相对综合一点的练习:书籍购物车
案例说明:
在界面上以表格的形式,显示一些书籍的数据;
在底部显示书籍的总价格
点击+或者-可以增加或减少书籍数量(如果为 1,那么不能继续-);
点击移除按钮,可以将书籍移除(当所有的书籍移除完毕时,显示:购物车为空~);
案例效果:
相关文章:
版权声明: 本文为 InfoQ 作者【渔戈】的原创文章。
原文链接:【http://xie.infoq.cn/article/3db3f4f5b5589a1aafa40ab0e】。文章转载请联系作者。
评论