vue中报错:Error in render: TypeError: Cannot read property name(或者其他属性) of undefined解决办法

本文详细解释了在Vue.js中遇到的TypeError: Cannot read property 'name' of undefined等渲染错误的原因,并提供了三种有效的解决方法,包括使用v-if指令和模板包裹来避免在数据未加载完成前尝试访问未定义的属性。

vue界面显示Error in render: "TypeError: Cannot read property ‘name’ of undefined"等问题,虽然不影响界面显示,但是打开控制台一大片红实在不美观。
在这里插入图片描述
vue中使用{{}}文本插值方式,通过 . 级联显示内容。在级联展示时,如果三层级联,只能解析在data中定义也就是vue实例上的对象子一层的东西,对于孙一层的东西就被解析成不在vue实例上的。也就是报错的此属性不在vue实例上。

后端内容返回之前,控制台会Cannot read property ‘xxx’ of undefined的错误。

vue是异步请求。页面渲染刚开始的时候还没有拿到这个值,所以会报错。在vue中对该值进行if判断(v-if = " ")。当该对象有值的时候再进行渲染。

如下代码,enterprisedata[0]通过后端接口返回。

报错代码片段:

<detail-list>
    <detail-list-item term="客户名称">{{ enterprisedata[0].name }}</detail-list-item>
    <detail-list-item term="客户编号">{{ enterprisedata[0].id }}</detail-list-item>
    <detail-list-item term="客户电话">{{ enterprisedata[0].tel }}</detail-list-item>
    <detail-list-item term="客户地址">{{ enterprisedata[0].address }}</detail-list-item>
    <detail-list-item term="信用等级">{{ enterprisedata[0].credit_rate }}</detail-list-item>
    <detail-list-item term="行业分类">{{ enterprisedata[0].category }}</detail-list-item>
    <detail-list-item term="客户类别">{{ enterprisedata[0].pro_sort }}</detail-list-item>
    <!-- <detail-list-item term="客户状态">{{ enterprisedata [0].null }}</detail-list-item> -->
    <detail-list-item term="建档时间">{{ enterprisedata [0].create_date }}</detail-list-item>
</detail-list>

解决方法:
1.

<detail-list>
    <detail-list-item term="客户名称" v-if="enterprisedata[0].name">{{ enterprisedata[0].name }}</detail-list-item>
    <detail-list-item term="客户编号" v-if="enterprisedata[0].id">{{ enterprisedata[0].id }}</detail-list-item>
    <detail-list-item term="客户电话" v-if="enterprisedata[0].tel">{{ enterprisedata[0].tel }}</detail-list-item>
</detail-list>

2.

<detail-list>
	<template v-if="enterprisedata[0]">
	  <detail-list-item term="客户名称">{{ enterprisedata[0].name }}</detail-list-item>
	  <detail-list-item term="客户编号">{{ enterprisedata[0].id }}</detail-list-item>
	  <detail-list-item term="客户电话">{{ enterprisedata[0].tel }}</detail-list-item>
	  <detail-list-item term="客户地址">{{ enterprisedata[0].address }}</detail-list-item>
	  <detail-list-item term="信用等级">{{ enterprisedata[0].credit_rate }}</detail-list-item>
	  <detail-list-item term="行业分类">{{ enterprisedata[0].category }}</detail-list-item>
	  <detail-list-item term="客户类别">{{ enterprisedata[0].pro_sort }}</detail-list-item>
	  <!-- <detail-list-item term="客户状态">{{ enterprisedata [0].null }}</detail-list-item> -->
	  <detail-list-item term="建档时间">{{ enterprisedata [0].create_date }}</detail-list-item>
	</template>
	</detail-list>

3.

new Vue({
  enterprisedata[0]: {
    title: '',
    description : ''
  },
  created(){
    // 调用后端接口
  }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值