Vuejs 组件图像源 concat 与 props

Vuejs component image source concat with a props

提问人:Jean-Loup Becquet 提问时间:10/28/2023 最后编辑:Jean-Loup Becquet 更新时间:10/29/2023 访问量:53

问:

我想显示一个图标,其中包含从 Vuejs 3 中的父组件收到的 props 给出的名称文件。 图标名称来自数据库,通过获取信息的方法。

这是我的脚本获取道具的部分:

<script>
export default {
  props: ['id', 'name', 'icon']
}
</script>

此代码在模板中运行良好(在字符串中给出名称):

<img v-bind:src="require('../../assets/icon01.png')" />

此代码在模板中运行良好(显示收到的图标名称):

<br>Icon name : {{ icon }}

为了添加动态图像,我尝试了以下各项的组合:

<img v-bind:src="require('../../assets/' + this.icon)" />
<img :src="require(`../../assets/${this.icon}`)" />
<img v-bind:src="require(this.getIconName())" />

我尝试将方法添加到组件方法列表中以连接并返回完整的字符串,并在 require 甚至直接使用它。 我尝试使用 v-bind、v-img、img,以及我在网上能找到的一切。

即使是像这样的猫:

<img v-bind:src="require('../../assets/' + 'icon01.png')" />

在 require 中工作正常,只要这与我的变量无关。

我不断收到错误,具体取决于我正在尝试的版本。

最常见的错误之一是:

./src/assets/stop16.ico 1:0 中的错误 模块分析失败:意外字符“”(1:0) 您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。请参阅 https://webpack.js.org/concepts#loaders(此二进制文件省略了源代码)

“stop16.ico”是资产文件夹中的另一个图标,我不知道它是如何获得的,因为我什至没有使用它。

知道什么可以救我吗?

javascript vue.js vuejs3 src

评论

0赞 suppe 10/28/2023
也许试试<img :src=“ 这里 require(../../assets/${this.icon} HERE )“ />开头带有 HERE = '。
0赞 IVO GELOV 10/28/2023
您是否尝试过不用函数包装路径名?require()
1赞 Pouya M 10/29/2023
我想你正在使用 Vite,所以你可以在这里找到你的答案:stackoverflow.com/questions/66419471/......

答:

0赞 Jean-Loup Becquet 10/29/2023 #1

我最终得到了这个:

<img v-bind:src="require(`../../assets/${this.icon}`)" />

它现在可以工作了,我不明白为什么它从一开始就不起作用。