美文网首页
vue 2.0 + element Ui 2.0版本 时 循

vue 2.0 + element Ui 2.0版本 时 循

作者: 多久以后_Mr | 来源:发表于2023-01-31 17:25 被阅读0次

vue 2.0 + element Ui 2.0版本 时 循环使用 el-popover 时 数据量大时 页面渲染卡顿问题

优化思路就是将el-popover提出来,不参与循环,让el-popover只渲染一次,这样在首屏渲染时,速度就会大大提升。这样就有两个问题需要解决:

1、如何将popover slot中的reference与for循环中的button关联起来,用来确定popover的出现位置。
2、如何触发popover显示与关闭

el-popover有几种激活方式,分click与v-model等。

1、click模式下,需要将button作为reference slot,只有点击reference才会显示popover,点击非popover区域会自动关闭popover,但是我们需要将popover提出来,而reference在v-for中渲染,自然不可能使用slot。
2、使用v-model时可以很方便控制显示与关闭但是点击非popover区域无法自动关闭。

<template id="test">
    <div>
        <div v-for='item in 100'>
            <el-button @click='clickPop(item)' :ref='`bt`+item'>click 激活</el-button>
        </div>
        <el-popover
                v-if='showPop'
                ref='pop'
                :reference='reference'
                placement="bottom"
                title="标题"
                width="200"
                trigger="click"
        >
            <el-button @click='$refs.pop.doClose()'>自定义关闭按钮</el-button>
        </el-popover>
    </div>
</template>
<script>
 data() {
            return {
                reference:{},
                // 控制渲染条件 如果不用v-if会报错 具体可自行尝试
                showPop: false,
                // 保存当前激活的refrence id
                activeId:'',
            };
        },
methods:{
            clickPop(item){
                // 这个操作是为了避免与源码中的点击reference doToggle方法冲突
                if (this.activeId === item && this.showPop) return
                this.showPop = false
                this.activeId = item
                // 因为reference是需要获取dom的引用 所以需要是$el
                this.reference = this.$refs['bt'+item][0].$el
                this.$nextTick(() => {
                    // 等待显示的popover销毁后再 重新渲染新的popover
                    this.showPop = true
                    this.$nextTick(() => {
                        // 此时才能获取refs引用
                        this.$refs.pop.doShow()
                    })
                })
            }
        }
</script>

抄袭 https://blog.csdn.net/weixin_45753473/article/details/119893112 这个大哥 (里边有详细分析可参考)

相关文章

网友评论

      本文标题:vue 2.0 + element Ui 2.0版本 时 循

      本文链接:https://www.haomeiwen.com/subject/sqlbhdtx.html