天天看點

element-ui 使用table元件 報錯 h.$scopedSlots.default is not a function

最近的開發中,有需求多個清單使用同一個table元件,在開發中正常編寫,結果突然就報錯了,報錯資訊如下:

element-ui 使用table元件 報錯 h.$scopedSlots.default is not a function

當時就蒙了,完全不知道錯在哪裡,後面一步步排查原因,剛開始以為是邏輯錯了導緻的,後面才發現是HTML層報錯,原因是使用了v-if切換元素導緻的,後面網上查資料,才知道,是因為表格是element-ui通過循環産生的,而vue在dom重新渲染時有一個性能優化機制,就是相同dom會被複用,這就是問題所在,是以,通過key去辨別一下目前行是唯一的,不許複用,就行了。

我這裡是在v-if 後面加上了 :key=“Math.random()”

<el-table :data="tableData"
		   class="push_data"
		   v-loading="loading"
		   element-loading-text="加載中"
		   element-loading-spinner="el-icon-loading"
		   tooltip-effect="light"
>
	<el-table-column v-if="msgType !== 5"
					 :key="Math.random()"
					 label="消息内容"
					 :show-overflow-tooltip="true"
	></el-table-column>
</el-table>
           

繼續閱讀