vue2项目最近有一个需求特别赶,在本地快速开发完之后就丢到测试环境中去了。测试中页面没有出现以下相关内容的报错,一切都很正常。
有一个其他的bug,然后打开测试控制台一打开咋这么多报红的,但是不影响正常显示判断,本地咋都没有出现
以下为这次出现的报错内容
1. Cannot read property ‘$router‘ of undefined
原因:找到看原因说因为每次路由改变之后,里面的this也变了所以没有找到报错,如果有大佬有见解请评论评论
原先代码
$route: {
handler: function (val, oldVal) {
this.setData()
if (this.userInfo.status == 2) {
this.open(this.userInfo.status)
} else if (this.userInfo.status == 3 || this.userInfo.status == 1) {
this.$refs['changePawRef'].showEdit('')
}
},
deep: true,
},
处理后
methods:{
changeRoute(){
this.setData()
if (this.userInfo.status == 2) {
this.open(this.userInfo.status)
} else if (this.userInfo.status == 3 || this.userInfo.status == 1) {
this.$refs['changePawRef'].showEdit('')
}
}
},
watch: {
$route: 'changeRoute'
},
2. error in render: "typeerror: cannot read properties of undefined (reading 'name')"
原因:在模板中使用了深度属性,多层,riskboj为空,后面的点出来的内容再没有赋值前是undefined
原代码
<span> {{ riskObj.riskScore.name }}</span>
data() {
return {
riskObj: {}
}
}
改动后
方法一:
<span> {{ riskObj.riskScore.name }}</span>
data() {
return {
riskObj: {
riskScore: {
name: '',
},
},
}
}
方法二:
<span v-if=“riskObj?.riskScore?.name”> {{ riskObj?.riskScore?.name }}</span>
data() {
return {
riskObj: {}
}
}