以下是我目前通过ES6在webpack中导入图像和图标的工作流程:
import cat from './images/cat1.jpg'
import cat2 from './images/cat2.svg'
import doggy from './images/doggy.png'
import turtle from './images/turtle.png'
<img src={doggy} />
这个情况很快变得混乱。以下是我想要的:
import * from './images'
<img src={doggy} />
<img src={turtle} />
我感觉应该有一种方式可以动态地导入特定目录中所有文件,以它们的名称(去掉扩展名)命名,并在需要时使用这些文件。
有人做过这个吗?或者对于最佳实现方式有任何想法?
更新:
使用所选答案,我能够做到这一点:
function importAll(r) {
let images = {};
r.keys().map((item, index) => { images[item.replace('./', '')] = r(item); });
return images;
}
const images = importAll(require.context('./images', false, /\.(png|jpe?g|svg)$/));
<img src={images['doggy.png']} />
.map
函数需要有一个返回值。在你的情况下,你应该使用forEach
函数。 - Bram Vanroyr.keys.().map(...)
即可... - LinusGeffarth