vue3+element plus图片预览点击按钮直接显示图片的预览形式

1 需求

直接上需求:

我想要直接点击下面这个"预览"按钮,然后呈现出预览图片的形式

也就是点击完"预览"按钮,会像下面这样:

ok,需求知道了,下面让我们来看看如何实现吧 ~

2 实现

template部分

ini 复制代码
<el-button
  type="primary"
  size="small"
  @click="handlePreview(scope.$index, scope.row)"
  >预览</el-button
>
<!-- 图片预览 -->
<el-image-viewer
  v-if="showImagePreview"
  :zoom-rate="1.2"
  @close="closePreview"
  :url-list="imgPreviewList"
/>

script部分

ini 复制代码
const imgPreviewList = ref<any>([])
const showImagePreview = ref(false)
const currentBase64FileData = reactive({
  base64: '',
  name: ''
})
​
const handlePreview = async (index: number, row: any) => {
    let res = await handleDownload(index, row, true,)
    currentBase64FileData.base64 = 'data:image/png;base64,' + res?.base64
    currentBase64FileData.name = res?.name
    showImagePreview.value = true
    // 下面数组里可以放一个url,如'https://raw.githubusercontent.com/JACK-ZHANG-coming/map-depot/master/2023image-20231120091054028.png',我这里放的是一个base64数据,也可以用来显示图片
    imgPreviewList.value = [currentBase64FileData.base64]
}
​
const closePreview = () => {
  imgPreviewList.value = []
  showImagePreview.value = false
}

ok,经过上面简单几句代码,就实现了"点击按钮直接显示图片的预览形式"啦 ~

3 技术小结

技术栈: vue3+ element plus,其中vue3采用的是script setup组合式语法的形式。

这部分功能其实在element plus官方文档中有写,

element-plus.org/zh-CN/compo...

不同的是,这里element plus并没有给出实际样例,只是用文字描述了下,咱就是说,家人们,这坑不坑,我还是看了别人的博客才知道这块的用处>_<

相关推荐
Chrischaan30 分钟前
做 AI 塔罗小程序时,我为什么不让大模型自己抽牌:一次上线复盘
前端
骑着蜗牛撵大象3271 小时前
LangChain 工具调用从声明到闭环:给智能体接上真实的手脚
前端
数据掘金1 小时前
百度统计后台页面数据异常?从手动调用时机开始排查
前端
hunteritself1 小时前
10 层 4K 实时剪辑,国产工作站进入广电制作核心
大数据·前端·人工智能·深度学习·transformer
踩着两条虫1 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
mbshqqb1 小时前
TypeScript基础教程之同步生成器
前端·javascript·typescript
嘟嘟同学和妮妮同学2 小时前
【升级】一个中国历史可视化站:皇帝时间线梳理、古代思想流派、诗词鉴赏 (2)
前端·html
暗夜行者之光2 小时前
LangGraph + MCP 实战:构建"自然语言查数据"的 ChatBI Agent
前端·后端
一tiao咸鱼2 小时前
还在手动海投?我做了个 AI 求职助手,自动筛选 BOSS 职位再精准投递
前端·后端·面试
尤水就下2 小时前
🔥预热:在线文档的 block 架构是如何实现的(未完待续...)
前端·javascript·架构