如何在 vue 3 中使用 v-for 附加图像

Posted

技术标签:

【中文标题】如何在 vue 3 中使用 v-for 附加图像【英文标题】:how to attach image using v-for in vue 3 【发布时间】:2021-09-11 02:41:38 【问题描述】:

我尝试使用 v-for 循环制作一组图像,但不知何故它无法识别标签内的变量。图片坏了,alt 只显示了 item.alt 东西。 这是我的 html

<section class="our-technologies__section" v-for="(item, index) in tech_item" :key="index">
        <div class="technologies__logo" @click="activeIndex = index" :class="active: activeIndex === index">
            <img src=" item.src " >
            <p>item.title</p>
        </div>
</section>

这里是脚本:

export default 
    name: "OurTechnologies",
    data: function () 
        return
            tech_item: [
                 title: 'Twilio', text: 'gfmds/lgkmlk/f', src: '../../images/twilio.png', alt: 'Twilio' ,
                 title: 'android', text: '12334356676', src: '../../images/android.png', alt: 'Android' ,
            ],
            activeIndex: 0,
         
    ,

我尝试使用&lt;img :src="item.src" :alt="item.alt"&gt;,但仍然没有结果。

【问题讨论】:

【参考方案1】:

在 vue cli 中你应该使用require 来加载图片:

<img :src="require(item.src)" :/>

【讨论】:

我应该在代码中添加一些东西来使用require吗? bc with it 页面根本没有加载? 是的,空白页和控制台显示“未捕获的错误:找不到模块 '../../images/twilio.png'” tho,alt 正在工作,如果我用实际路径替换 require(item.src) 它也可以工作。 require 的路径应该不同吗? 试试绝对的,比如src: '@/images/twilio.png' 同样的问题,页面是空白的同样的错误......但如果我写 它有效。【参考方案2】:

&lt;img :src="item.src" :alt="item.alt"&gt; 应该可以 ™,但是我对您设置的环境了解不够。我很快尝试了一个使用vite 并使用App 组件(因此它是根级别)的新项目,它甚至不需要require 就可以工作。为此,您的图像通常位于./src/assets/ 目录中,但它们不是,我想知道这是否是导致问题的原因,图像超出了范围。您可能有不同的设置,但我认为您可以使用其他选项。

将图像放入./public/images/ 文件夹。无论您使用的是dev/serve 还是build,这都会使它们成为捆绑包的一部分。然后将它们引用为/images/*.png,不带requireimport。只要您在根级别为应用程序提供服务,以便/images 正确解析,这应该可以使其正常工作。否则,它可能需要一些额外的技巧来定位正确的目录。

【讨论】:

以上是关于如何在 vue 3 中使用 v-for 附加图像的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap-Vue 模态:如何在 V-For 渲染列表中打开不同的模态?

如何在 vue.js 中同时使用 v-for 和源绑定?

如何在不使用 v-for 的情况下使用 Vue.js 访问 JSON 值

Vue 2 图像无法在某些浏览器中呈现

Nativescript-Vue:如何在 ListView 中正确使用 v-for

在firestore中发布时如何附加图像