vue中watch监听器的触发时机(watch的坑及解决)
2022-04-18 17:05:13 来源:易采站长站 作者:
目录
watch监听器的触发时机起因代码watch控制台说明vue watch的理解小记watch监听器的触发时机
起因
我需要在页面created时获得商家的类型id值,然后监听id值,动态的改变请求接口的地址。请求接口的函数在mounted中执行。业务逻辑写完后发现,页面在第一次加载时,接口没有数据,原因接口地址为空,即接口地址没有改变。
代码
created() { this.typeId = this.$route.params.id; console.log("this.typeId的值发生改变,触发watch"); }, mounted() { console.log(this.typeUrl, "mounted中的typeUrl的值"); //访问接口的函数 this.getData(); },watch
watch: { // 监听订单类型 给出对应面包屑 typeId: function (val) { if (val == 1) { console.log("watch触发了"); this.selfBreadcrumb[1].name = "核销订单"; this.typeUrl = "settlements"; console.log(this.typeUrl, "这里是watch"); } else if (val == 2) { this.selfBreadcrumb[1].name = "物流订单"; this.typeUrl = "logistics-orders"; } else if (val == 4) { this.selfBreadcrumb[1].name = "外卖订单"; this.typeUrl = "takeout-orders"; } },控制台
只有等我项目完成了再来康康。
vue watch的理解小记
刚开始学时,感觉自己懂了。可是到用时才发现自己是渣渣中的渣渣。。。
想通过路由id的变化来改变组件的加载数据时,遇到了一个问题,就是,组件不会重新渲染。一脸懵逼了,,,
找到了watch的监控方法时,又用不好。扣扣会用了一些,赶紧记下来。
首先确认 watch是一个对象,一定要当成对象来用。
对象就有键,有值。
键:就是你要监控的那个家伙,比如说$route,这个就是要监控路由的变化。或者是data中的某个变量。值可以是函数:就是当你监控的家伙变化时,需要执行的函数,这个函数有两个形参,第一个是当前值,第二个是变化后的值。值也可以是函数名:不过这个函数名要用单引号来包裹。第三种情况厉害了。
值是包括选项的对象:选项包括有三个。
第一个handler:其值是一个回调函数。即监听到变化时应该执行的函数。第二个是deep:其值是tru function (val, oldVal) { /* ... */ }, deep: true, immediate: true } }})以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
暂时禁止评论













闽公网安备 35020302000061号