如標題所示,是在使用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}
}
}
},