比如平时created时要请求一次数据,并且当搜索值改变,也要请求数据,我们会这么写
created(){
this.getList()
},
watch: {
searchInputValue(){
this.getList()
}
}
使用immediate完全可以这么写,当它为true时,会初始执行一次(immediate为true的时候就会立即执行handler函数,默认是为false不执行)
watch: {
searchInputValue:{
handler: 'getList',
immediate: true
}
}
下面代码是,params发生改变就重新请求数据,无论是a,b,c,d属性改变
data() {
return {
params: {
a: 1,
b: 2,
c: 3,
d: 4
},
};
},
watch: {
params: {
deep: true,
handler() {
this.getList;
},
},
}
但是如果我只想要a,b改变时重新请求,c,d改变时不重新请求呢?
mounted() {
Object.keys(this.params)
.filter((_) => !["c", "d"].includes(_)) // 排除对c,d属性的监听
.forEach((_) => {
this.$watch((vm) => vm.params[_], handler, {
deep: true,
});
});
},
data() {
return {
params: {
a: 1,
b: 2,
c: 3,
d: 4
},
};
},
watch: {
params: {
deep: true,
handler() {
this.getList;
},
},
}