如何动态导入图像,只将其名称作为 prop 从父对象发送到子对象?
父项:
<Message
v-if="cartItems.length == 0"
text="Još nemate proizvoda u košarici."
imageName="empty-cart"
/>
孩子:
<template>
<div class="message-wrapper">
<img
:src="`../assets/${props.imageName}.png`"
:alt="`${props.imageName}-img`"
/>
<p>{{ props.text }}</p>
</div>
</template>
<script setup>
const props = defineProps({
text: String,
imageName: String,
});
</script>
我收到错误:GET http://localhost:5173/assets/empty-cart.png 404 (Not Found)
但是当我将其更改为静态图像导入时,它可以工作:
<template>
<div class="message-wrapper">
<img
src="../assets/empty-cart.png"
alt="img"
/>
<p>{{ props.text }}</p>
</div>
</template>
2条答案
按热度按时间vh0rcniy1#
使用Vite,解决方案是使用新的URL(url,Meta)
比如说,
作为一个侧面说明,
props.imageName
中的props
在<template>
代码中使用时是不必要的。它是自动剥离的,所以包含它并不重要。tf7tbtn22#
您可以尝试使用
require()
。举例来说:
在本例中,
props.imageName
应该是图像名称及其扩展名。例如,props.imageName = "empty-cart.png"