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