vue You may have an infinite update loop in a component render function报错

在使用Ant Design Vue的表格组件时,遇到'You may have an infinite update loop in a component render function'错误。错误源于在计算属性中修改了data数据,导致渲染与数据更新的无限循环。解决方案是修改计算方法,避免直接更新原有数据值。

如标题所示,是在使用ant design vue的表格组件时引起的错误,报错信息如下
在这里插入图片描述
首先,这个表格是在一个v-for的a-tab组件内的a-table
看错误信息表示无限更新的循环
后来发现,渲染表格内容时,调用了一个计算方法返回要显示的内容,错误在于,在计算方法内,又改变了data数据的值,在更新渲染的时候又修改数据,又回导致更新,于是就死循环了
简略错误代码如下

<a-tabs v-model="queryMode">
        <a-tab-pane v-for="item in tabList" :key="item.value" :tab="item.title">
          	 <a-table
		      :columns="header"
		      :scroll="{ x: scrollX, y: TABLE_MAX_HEIGHT }"
		      :dataSource="body"
		      :loading="loadingObj"
		      :pagination="pagination"
		    >
		      <template v-for="title in headerSlots" :slot="'$' + title">
		        <span :key="title">
		          {{ getHeaderTarget(title).title }} // 此处调用计算方法
		        </span>
		      </template>
		    </a-table>
        </a-tab-pane>
      </a-tabs>

	computed: {
	    getHeaderTarget () {
	      return dataIndex => {
	        const target = this.systemNameValid[dataIndex]
	        target['title'] = this.header.find(item => item.dataIndex === dataIndex).text // 此处又修改了target的值
	        return target
	      }
	    }
	  },

修改计算方法,不更新原值就可以了

computed: {
	    getHeaderTarget () {
	      return dataIndex => {
	        const target = this.systemNameValid[dataIndex]
	        return {remark: target.remark, title: this.header.find(item => item.dataIndex === dataIndex).text}
	      }
	    }
	  },
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值