在网上看到了一些答案,但是没有清晰的解释,而且这些解决方案也行不通。所以我现在要做的是:
- 我有一个包含很多图片(数千张)的文件夹——目前保存在
src/assets/images
文件夹下 - 给定一组图片作为输入,我想要动态地渲染这些图片,而不是导入全部图片,因为数量太大了,根本不可能
这是我当前的实现方式(无法正常工作):
// for example
const imageList = ['img1', 'img2', 'img3' /*...so on */]
const getImagePath = (image) => {
return `../assets/images/${image}.jpg`
}
function ImagesPage() {
return (
<>
<p>Below should show a list of images</p>
{imageList.map((img) => {
return <img src={require(getImagePath(img))} />
})}
</>
)
}
根据我在网上阅读到的信息,这与 webpack 的工作方式有关,只有在require
中输入完整的字符串路径才能正常工作:
// This works:
<img src={require('../assets/images/img1.jpg')} />
// But all these will not work:
<img src={require(getImagePath(img))} />
const img = 'img1.jpg'
<img src={require(`../assets/images/${img}`)} />
你知道我如何使得这个动态导入图像在我上面描述的场景中工作吗?我认为这篇文章对于其他正在寻找答案的人也会很有帮助。