【发布时间】:2017-06-26 09:01:57
【问题描述】:
这是我目前通过 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有点期待返回值。在您的情况下,可以改用一个好的 ol'forEach。 -
@BramVanroy 或直接将其设为单行并直接返回
r.keys.().map(...)...
标签: reactjs webpack ecmascript-6