vue3 中动态引入背景图片
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
·
今天做项目的时候遇到了一个需求:有五类危险物品,每个危险物品都有五个级别,UI针对每个级别都给了我们图,有一个接口,接口中会给我们返回每类危险品的级别,我们该怎么根据接口的字段来加载不同的图片呢,
方法一:
有一种方法是,引入5*5 = 25 张背景图片
引入方法如下:
import pic1 from '../asset/images/pic1'
import pic2 from '../asset/images/pic2'
import pic3 from '../asset/images/pic3'
const arr = [pic1, pic2 , pic3]
然后根据接口返回的值作为数组下标,用<img :src="arr[接收接口返回值的变量]" alt="">
<template>
<!--vue3动态引入路由文件-->
<div class="home">
// 假设index 就是接口返回的污染物级别
<img :src="arr[index]" alt="">
</div>
</template>
这样当然可以,但是大家思考一下代码量:
5类*5级,我们要引入25个对象 + 开五个数组才能实现这个功能。这样无疑是低质量的解决方法。
方法二:使用动态引入图片的方法
废话不多说,直接上代码
<template>
<!--vue3动态引入路由文件-->
<div class="home" v-for="(item,index) in a" :key="index">
<img :src="getImageUrl(index)" alt="">
</div>
</template>
<script lang="ts" setup>
const catatory = [1,3,2,4,5]; // 这代表接口返回每一类污染物的危险级别
const a = [0,0,0,0,0]; // 主要是用它的index , index+1 表示每一种类
// 我们将图片命名为: pic1-1.jpg pic1-2 .......
const getImageUrl = (index) => {
// index +1 代表危险级别、 a[index] 代表这一类的危险级别(这样做的前提是数组中的危险级别和污染物种类是一一对应的)
return new URL(`../assets/images/pic${index+1}-${catatory[index]}.jpg`,import.meta.url).href;
}
</script>
<style lang="scss" scoped></style>
这样我们就得到了 pic1-3.jpg、 pic2-1.jpg、 pic3-2.jpg、 pic4-4.jpg、 pic5-5.jpg 五张背景图片。
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:3 个月前 )
9e887079
[skip ci] 1 年前
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)