问题
在vue实例中使用watch监听变化时,打印this指向实例的值为空?
打印结果如下所示:(这里的this.isModuleShow是组件里data的值)

解决
(分析结果:上下文指向问题)
- 解决前代码:
watch:{
'form.options.type':(value)=>{
if (value == "module") {
console.log('this.isModuleShow:',this.isModuleShow)
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
可以看出我在方法中使用的是箭头函数。
- 解决后代码:
watch:{
'form.options.type':function(value){
if (value == "module") {
console.log('this.isModuleShow:',this.isModuleShow)
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
修改为普通函数后,打印正确值:

- 其他正确写法:
watch: {
'form.options.type'(value){
if (value == "module") {
console.log('this.isModuleShow:',this.isModuleShow)
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
watch: {
"form.options.type": {
handler(value) {
if (value == "module") {
console.log("this.isModuleShow:", this.isModuleShow);
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
}
本文探讨了在Vue实例中使用watch监听变化时,箭头函数导致的this指向问题。通过对比不同写法,阐述了如何避免this指向错误,确保能够正确访问组件内的属性。

被折叠的 条评论
为什么被折叠?



