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...

相关推荐
黄筱筱筱筱筱筱筱9 分钟前
7.适合新手小白学习Python的异常处理(Exception)
java·前端·数据库·python
Yeats_Liao16 分钟前
微调决策树:何时使用Prompt Engineering,何时选择Fine-tuning?
前端·人工智能·深度学习·算法·决策树·机器学习·prompt
晚霞的不甘17 分钟前
Flutter for OpenHarmony 实现 iOS 风格科学计算器:从 UI 到表达式求值的完整解析
前端·flutter·ui·ios·前端框架·交互
陈希瑞20 分钟前
OpenClaw Chrome扩展使用教程 - 浏览器中继控制
前端·chrome
雨季66624 分钟前
Flutter 三端应用实战:OpenHarmony “呼吸灯”——在焦虑时代守护每一次呼吸的数字禅修
开发语言·前端·flutter·ui·交互
切糕师学AI25 分钟前
Vue 中如何修改地址栏参数并重新加载?
前端·javascript·vue.js
软弹25 分钟前
Vue3如何融合TS
前端·javascript·vue.js
0思必得09 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5169 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino9 小时前
图片、文件的预览
前端·javascript