ElementPlus 循环Popover合并优化
起因:表格内td内容需要扩展展示
得到了这样的结果
确实满足了需求,但是,简单思考了一下可能存在的问题,于是去扒了一下DOM。enm……果然如此
有多少行就生成了多少个Popover
这哪行啊,表格每页数量还是能选的,哪天产品脑子一抽,来个1000,5000,岂不是玩蛋
所以,这是病,得治。因为我解决不了提出问题的人
于是,翻了一下api,挨!找到了
这玩意有用,琢磨一下试试
上代码,为了容易从DOM中观测,给他起个名字叫 MultipleIn1
<el-popover
ref="popover"
v-model:visible="state.popoverVisible"
virtual-triggering
:virtual-ref="virtualRef"
placement="top"
popper-class="MultipleIn1"
>
<div class="p8">popover content</div>
</el-popover>
此时,Table Column部分则改为:
<el-table-column label="ID" prop="id" width="120">
<template #default="{ row }">
<span @mouseenter="(e) => showPopover(e, row)">
{{ row.id }}
</span>
</template>
</el-table-column>
@mouseenter显示Popover
因为el-popover组件默认了隐藏时间200ms,所以,有频率需求的,可以通过调节hide-after参数来调节
由于el-popover文档内没有virtual-ref的描述,尝试了几次之后,发现这玩意绑DOM即可
于是有了显隐的方法:
const showPopover = (e, row) => {
virtualRef.value = e.target;
state.popoverVisible = true;
};
然后,
好使!
扒一下DOM:
好使!
[注:没写的参数自补全]