目录watch监听器的触发时机起因代码watch控制台说明Vue watch的理解小记watch监听器的触发时机 起因 我需要在页面created时获得商家的类型id值,然后监听id
我需要在页面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: {
// 监听订单类型 给出对应面包屑
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";
}
},
watch的触发会在created和mounted结束后。
先占个坑,具体原理如何只有等我项目完成了再来康康。
刚开始学时,感觉自己懂了。可是到用时才发现自己是渣渣中的渣渣。。。
想通过路由id的变化来改变组件的加载数据时,遇到了一个问题,就是,组件不会重新渲染。一脸懵逼了,,,
找到了watch的监控方法时,又用不好。扣扣会用了一些,赶紧记下来。
首先确认 watch是一个对象,一定要当成对象来用。
对象就有键,有值。
第三种情况厉害了。
值是包括选项的对象:选项包括有三个。
var vm = new Vue({
data: {
a: 1,
b: 2
},
watch: {
a: function (val, oldVal) {
console.log('new: %s, old: %s', val, oldVal)
},
// 方法名
b: 'someMethod',
// 选项的对象
c: {
handler: function (val, oldVal) { },
deep: true,
immediate: true
}
}
})
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: vue中watch监听器的触发时机(watch的坑及解决)
本文链接: https://www.lsjlt.com/news/145526.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0