解决Error in render TypeError问题

出现该问题时浏览器能够正常的显示数据功能,但是控制台会报错:Error in render: "TypeError: Cannot read property 'categories' of undefined",具体如下:
图片说明
该问题的本质是vue的渲染机制问题, vue在渲染时,读取某个对象的属性时找不到对应的对象。这个问题只会发生在三层表达式中,即a.b.c,在二层表达式中会返回undefined。通常发生在子组件使用父组件传入的值时。
根本原因
vue的渲染机制中,异步数据先显示初始数据,再显示传入的数据,因此在使用该对象时,很可能是在对一个空对象进行操作,当渲染完成了,数据才传入过来。所以在渲染时,出现的三层表达式的对象的属性还不存在,再在这个对象中取其他值自然会报错,但是渲染完成后,对象中的值加载好了,自然可以取到,这也就解释了为什么界面正常显示,但控制台会报错的原因。
解决方案
我们需要在所有的数据传输完成之后在进行加载,因此可以给该元素加上一个v-if判断,在该属性存在时再对该元素进行渲染:
图片说明

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务