el-dialog 内有图片列表,打开直接显示图片,内容预加载

el-dialog内有图片列表,需要打开时直接显示图片,不需要显式的加载过程

问题表现

很明显,打开弹框之后有一个图片资源的请求,并且弹框的勋章图片也是逐步的显示出来的,虽然已经很快。但是不够完整,令人感觉这不是一个勋章,像是纸糊,缺少完整的感觉。最好的效果就是:没有加载的过程,打开直接是完整的展示。

原因

当前看见的是打开才会去请求资源,资源是在img 标签src属性赋值之后去发起的。也就是说需要以下条件:

  1. img标签在dom树上
  2. 提前去让img 标签 src 属性有数据

打开el-dialog 源码:

也就是说 visible 属性为true之前,直接让 rendered 为true 就会在dom树上渲染

直接通过弹框实例来操作 rendered:

javascript 复制代码
mounted() {
    this.$refs.dialogRef.rendered = true
}

尝试一下确实是可以,但是图片资源加载慢导致,还是能看见图片加载的过程。如果能等待图片加载完成之后再打开弹框就好了

一种解法

图片资源的加载完成有可以通过 load 事件来得知是否加载完成 以下是示例代码:

vue 复制代码
<template>
  <img :src="imageUrl" @load="onImageLoad">
</template>

<script>
export default {
  data() {
    return {
      isImageLoaded: false,
      imageUrl: 'http://example.com/image.jpg'
    }
  },
  methods: {
    onImageLoad() {
      this.isImageLoaded = true
    }
  }
}
</script>

我是一个图片列表,那么只需要等待每一个图片资源加载完之后触发 load 函数次数大于等于 列表长度 就表明 图片资源加载完毕,可以显示弹框。如下

完事儿,效果嘎嘎好

参考内容: juejin.cn/post/698541...

相关推荐
小大宇2 分钟前
vue知识点9-标签上的ref
前端·javascript·vue.js
艺杯羹4 分钟前
告别大模型滥用与延迟失控:确定性优先法则与本地规则引擎实战
前端·人工智能·系统架构
MetWeave6 分钟前
一根杆与一张场:把你的机场画上地图
前端·数据可视化
2601_9495758612 分钟前
JSON5 跨端三方库仓颉适配全流程
前端·javascript·flutter
Java后端的Ai之路15 分钟前
【AIAgent项目-AI生成PPT-09】灵活排版
前端·vue.js·人工智能·python·powerpoint
MasonYyp19 分钟前
安装npm依赖仓库Verdaccio
前端·npm·node.js
Antruly33 分钟前
C++ Web 开发选型漫谈:从 Drogon 到 libuvcpp + uvp,八个项目的定位、兼容性与务实排名
开发语言·前端·c++
红红谈说36 分钟前
同一套产品两个技术栈,双版本前端工程差异怎么收敛?
前端·uni-app·vue3·前后端分离·双版本维护·接口约定
不吃鱼的羊41 分钟前
如何建立高自尊
java·服务器·前端
计算机魔术师44 分钟前
编程智能体卡在"需要登录"这步,六种接法代价差得很远
前端