如何从索引文件迭代多个导入的模块

Lef*_*eff 11 javascript es6-modules

我有一个名为的目录Polygons,我在其中创建了一个index.js文件以从该目录导出所有文件。它看起来像这样:

export {default as europe} from './europe'
export {default as northAmerica} from './northAmerica'
Run Code Online (Sandbox Code Playgroud)

europe文件导出变量如下:

export default europe;
Run Code Online (Sandbox Code Playgroud)

在我想使用这些变量的文件中,我将像这样导入它们:

import * as regions from './Polygons'
Run Code Online (Sandbox Code Playgroud)

我现在想以某种方式迭代这些导入,有什么办法可以做到这一点吗?

我尝试过这样做:

  for (const element of regions) {
    console.log(element);
  }
Run Code Online (Sandbox Code Playgroud)

但是,然后我得到:

Uncaught (in promise) TypeError: Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.
Run Code Online (Sandbox Code Playgroud)

Sun*_*ary 13

它是一个对象,因此 for..of 会失败,但您可以使用Object.keysorObject.values将其转换为数组,然后获取结果。

这是执行相同操作的示例代码:

keys = Object.keys(React)
for (const key of keys) {
  console.log(key, React[key])
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。如有任何疑问/澄清,请回复。