天天看点

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>
           

继续阅读