【发布时间】:2018-03-18 00:21:06
【问题描述】:
我正在尝试找出我在导入 ES6 模块时遇到的问题。
这是我正在尝试做的一个非常简化的版本。我当前的文件结构对于嵌套文件夹要复杂得多。
我有 2 个 ReactJS 组件:
/buttons
/MyComponent1.js
/index.js
/texts
/MyComponent2.js
/index.js
/index.js
我的文件如下所示:
我正在从根 index.js 文件导入 MyComponent2,这是我的包的入口点。
MyComponent1.js
import MyComponent2 from '../../';
export default () => (
<div><MyComponent2 /></div>
);
MyComponent2.js
export default () => (
<div>Hello world</div>
);
我的buttons/index.js 和texts/index.js 文件将所有组件导出到它们自己的文件夹中:
按钮/index.js
export { default as MyComponent1 } from './MyComponent1';
texts/index.js
export { default as MyComponent2 } from './MyComponent2';
而我的根 index.js 导出我所有的文件夹以使它们公开可用。这是我的入口点:
export * from './buttons';
export * from './texts';
所以当我从根 index.js 文件中导入 MyComponent1 中的 MyComponent2 时,它是 undefined。当我从./MyComponent2.js 导入它时,它就被定义了。当我在另一个项目中导入整个包并从根index.js 文件中导入MyComponent2 时,它已定义。
令人兴奋,我不明白为什么我不能从根 index.js 文件中导入 MyComponent2。
我需要这样做,因为我有一组嵌套在不同文件夹中的数百个组件,我想让它们都可以从这个入口点文件中使用。
有人能告诉我发生了什么以及如何使这成为可能吗?
谢谢
【问题讨论】:
-
尝试简单导出:
export default MyComponent1导入:import MyComponent1 from './index' -
我发现导入到 vars 然后单独导出工作。这种方式没有。
标签: javascript reactjs ecmascript-6