vue3.0 element-plus 不同版本 el-popover 循环优化

表格内循环el-popover 

渲染以后的页面,数据量很大的时候页面会卡,生成的代码:

解决思路:将el-popover提出来,不参与循环,让el-popover只渲染一次

 

1、以1.1.0-beta.24版为例(低版本)

红色下划线部分是关键点

 

 

v-popover的值与el-popover的ref值要一致

2、以2.3.9版为例(当前新版本)

与低版本不同, v-popover被弃用了

以官方文档为例

:virtual-ref  可以直接传dom,这样变得更简单了,主需要把需要操作的控件对应的dom直接赋值给变量,传给:virtual-ref就行,举例:

 

 

 


 

 

 

 

### Element Plus 使用 `v-for` 循环控制 `el-popover` 组件的显示和隐藏 为了在使用 `Element Plus` 的项目中通过 `v-for` 实现多个 `el-popover` 组件并分别控制其显示和隐藏,可以采用以下方法: #### 数据绑定与事件处理 创建一个数组来存储各个 popover 的状态,并将其与模板中的数据进行双向绑定。对于每一个由 `v-for` 渲染出来的项,都需要有一个独立的状态变量用于管理该特定 popover 是否可见。 ```html <template> <div class="example"> <!-- 假设 items 是要遍历的数据列表 --> <ul> <li v-for="(item, index) in items" :key="index"> {{ item.name }} <!-- 每个 el-popover 对应于 items 数组的一项 --> <el-button @click="togglePopover(index)">点击</el-button> <el-popover ref="popovers" placement="top-start" title="标题" width="200" trigger="manual" :visible.sync="popoverVisible[index]" > <p>这是一些内容。</p> <div style="text-align: right; margin-top: 8px;"> <el-button size="mini" type="primary" @click="closePopover(index)">关闭</el-button> </div> </el-popover> </li> </ul> </div> </template> <script> export default { name: &#39;ExampleComponent&#39;, data() { return { items: [ {name: "Item One"}, {name: "Item Two"} ], popoverVisible: [] // 存储每个 popover 的可见性状态 }; }, methods: { togglePopover(idx){ this.$set(this.popoverVisible, idx, !this.popoverVisible[idx]); const popoversRef = this.$refs.popovers; if (Array.isArray(popoversRef)) { let instance = popoversRef[idx]; if (!instance.doShow && this.popoverVisible[idx]) { setTimeout(() => { instance.show(); }, 0); } } }, closePopover(idx){ this.$set(this.popoverVisible, idx, false); const popoversRef = this.$refs.popovers; if (Array.isArray(popoversRef)){ let instance = popoversRef[idx]; if(instance.doClose){ instance.hide(); } } } }, mounted(){ // 初始化 popoverVisible 数组长度等于 items 数量 this.items.forEach((_, i) => { this.$set(this.popoverVisible, i, false); }); } }; </script> ``` 上述代码展示了如何利用 Vue.jsElement Plus 来动态地管理和展示多个 `el-popover` 实例。注意这里的 `ref="popovers"` 被用来获取所有的 popover 实例以便手动调用它们的方法[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值