前言watch,顾名思义,属于vue2.x版本的hook函数,监控观察组件状态变化。常见的应用场景包括监听路由变化,以及父组件传递给子组件的props数据的变化等基本使用watch时,需要在data中创建一个state,添加到watch中进行观察.当发生变化时,手表可以通过默认参数获取最新的值。更改
name值:{{name}}{{nameTip}}异步获取年龄:{{age}}letp1=newPromise((resolve,reject)=>{resolve({age:"14"});});data(){return{name:"zhangsan",nameTip:"namehasnotchanged",};},watch:{name(newVal,oldVal){//watch可以监听一些状态变化,做一些处理,修改状态,或者异步operationthis.nameTip="名称状态改变";这个.getData();},},方法:{getData(){setTimeout(()=>{this.getAge();},1000);},getUser(){this.name="lisi";},getAge(){p1.then((res)=>{console.l奥格(资源);this.age=res.age;});},},点击修改时,name的值会变成lisi,手表监听到name的修改后,可以修改nameTip的文字,进行其他状态的修改,我们也可以获取到最新的通过newVal获取name的值,或者对oldVal的值进行一些比较和操作。使用promises和timer来模拟状态发生变化时,请求后台数据并渲染,这是我们在开发过程中,对watch使用immediate和deepimmediate的典型例子:当watch首次加载或者第一次绑定时时间,需要监听获取数据中的状态,那么可以使用immediate,设置为true,这个属性值为布尔值deep:当手表监听的值是对象时,可以使用这个属性监控对象的深层属性变化。注意:deep默认为false。使用的时候需要加上deep:true,deep和immediate的值一样,都是布尔值#####例子
{{immediateNameTip}}data(){return{immediateName:"immediateNameoriginalvalue",immediateNameTip:"immediateName变化时的提示文字",};},immediateName:{handler(newVal,oldVal){console.log("immediate表示当初始监控是值得的时候,这段代码是也执行了");setTimeout(()=>{this.immediateNameTip="immediateName添加immediate,初始绑定也会被执行";},2000);},immediate:true,deep:true,//仅针对对象的深层属性变化},当immediate设置为true时,定时器执行后第一次输入immediateNameTip,会变deep。这里不再举例。可以在实战中使用和学习。建议用法watch可以用来监听路由变化,异步获取数据。同时对于一些开销比较大的状态进行监控的应用场景也很多,还有购物车功能的实现等场景。vue和watch的区别在我个人博客持续更新。以上例子源码已经开源,后续关于vue的笔记会持续更新码云https://gitee.com/lewyon/vue-notegithubhttps://github.com/akari16/vue-note文章个人博客地址:详细介绍vue2.x版本中computed和watch的使用-watch欢迎关注公众号:程序员Buu,不时创作一些前端介绍文章不容易,转载请注明出处和作者。