以下是我当前通过ES6导入网页中的图像和图标的工作流程:

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} />

我觉得必须有某种方法来动态导入特定目录中的所有文件,将其命名为sans扩展名,然后根据需要使用这些文件.

有人看到过这件事,或者有没有想过最好的方法?


UPDATE:

使用选定的答案,我能够做到:

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']} />

推荐答案

我觉得必须有某种方法来动态导入特定目录中的所有文件,将其命名为sans扩展名,然后根据需要使用这些文件.

不是ES6.importexport的全部要点是,依赖关系可以statically确定,也就是说,不需要执行代码.

但既然你使用的是webpack,那就看看require.context吧.你应该能够做到以下几点:

function importAll(r) {
  return r.keys().map(r);
}

const images = importAll(require.context('./', false, /\.(png|jpe?g|svg)$/));

Reactjs相关问答推荐

如何等待我的插入内容提交后再继续执行指令?

有正确的方法来设置我的金牛座应用程序的图标吗?

Firebase删除UserWithEmail AndPassword仅创建匿名用户

FireBase未与Reaction应用程序连接

对搜索引擎优化来说,react 头盔的异步足够了吗?

useCallback()是否应该用于作为prop传递给子组件的函数,即使该组件包装在memo()中?

PWA:注册事件侦听器不会被触发

如何在 React Native 中渲染下面的对象数组?

预期无限重新渲染但没有发生

React - 函数组件 - 点击两次问题处理

如何渲染子路径并触发react 路由父加载器?

onChange in useEffect 的最佳实践

Recharts 笛卡尔网格 - 垂直线和水平线的不同样式

react-router v6 中的 BrowserRouter 和 createBrowserRouter 有什么区别?我可以在不使用数据 API 的情况下使用 createBrowserRouter 吗?

基于标记名的博客详细信息分组没有发生

未捕获的类型错误:useSelector 不是函数

Select 建议后如何关闭 vscode 添加自动完成={}

Cypress ,重试不再附加到 DOM 的元素

React如何在用户登录后等待当前用户数据被获取

如何在组件文件夹内的react 组件文件中导入外部css文件?