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

如标题所示,是在使用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}
	      }
	    }
	  },
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章