最近写项目的时候遇到一个问题,后端需要我写一个json对象传过去,但是当我想获取数据或者提交时 ,提示我报错[Vue warn]: Error in v-on handler: "TypeError: Cannot set properties of null (setting ‘tableData’)"和TypeError: Cannot set properties of null (setting ‘tableData’)
data中已声明对象,问什么还是null?
报错原因
1、后台传的数据为null
2、前端提交给后端的数据中,字段已在data声明,但是后端传数据的时候返的为null
解决办法
针对问题一
字段初始化有值时
就是在接受后端传的字段中添加一个判断,如果设置的字段初始化有值可以进行if-else判断,如果直接进行或运算,提交的时候没有数据(undefined)
tableData:[
{
type: "xxxx",
grade: "",
}
],
if(response.data.value.tableData){
this.tableData = response.data.value.tableData;
}else{
this.tableData = this.tableData;
}
字段初始化为空(undefined)
如果设置的本就为空,可以进行||运算
this.imageSrc = (response.data.value || this ).imageUrl;
针对问题二
前端要提交给后端某个字段,但是当时后台传的给前端的数据为null,所以在接收字段的时候依旧进行一个判断,不然在提交时进行判断太过麻烦
this.ironform.value = response.data.value || {};
问题也就能迎刃而解了