关于Error in render: "TypeError: Cannot read property ‘0’ of null"问题的解决方法
//这里是原生代码块,也就是运行该块代码,会出现上图中的问题
<li @click="gotoProduct">
<img v-bind:src="goods[0].goodsPicture" alt="小米路由器A4">
<h4>{{goods[0].goodsName}}</h4>
<p>{{goods[0].goodsIntroduction}}</p>
<span>{{goods[0].goodsPrice}}元</span>
出现该种情况的根本原因:
由于vue中存在异步调用,所以在vue的渲染机制中,异步数据先显示初始数据,再显示从后台带回的数据,所以当vue首先执行的时候,goods里面根本就没有数据,所以前台才会报出 Error in render: "TypeError: Cannot read property ‘0’ of null"的错误,那么解决方法很简单,就是在加载该模块时添加一个判断语句,如果“goods”为空的时候,就不进行该模块的渲染,更改后代码如下:
<li @click="gotoProduct" v-if="goods!=null">
<img v-bind:src="goods[0].goodsPicture" alt="小米路由器A4">
<h4>{{goods[0].goodsName}}</h4>
<p>{{goods[0].goodsIntroduction}}</p>
<span>{{goods[0].goodsPrice}}元</span>
主要的更改就是在li标签中添加了一个v-if的判断语句,当goods为空时,取消对该模块的渲染,以此来解决 Error in render: “TypeError: Cannot read property ‘0’ of null” 的问题
之前也看过很多解决问题的方法,然后自己的话主要是想写一个博客来记录一下自己所遇到并解决的问题
如果还有什么问题,请评论区的大佬指出来,谢谢啦