"导出默认来自"没有与Babel React合作

时间:2016-12-07 22:12:03

标签: javascript node.js reactjs npm babel

我使用react来构建我的组件库。我需要index.js在一个地方导入所有组件。

这样的事情:

MyComponents/
  Button.js
  Label.js
  index.js

我在index.js内尝试了下一步:

// this export nothing
export {default} from './Button';
// this tells me about syntax error
export default from './Button';

我发现只有这个解决方案有效

import Button from './Button';
export default Button;

但是我发现一些React Component库使用了我上面提到的语法(export default from './Button') - 它以某种方式工作。看起来他们使用了一些babel-plugin-transform-*来执行此操作。

请找我找到如何将我的两行导出导出转换为一行export ... from ...。谢谢。

P.S。最后,我需要这样做:import Button from './MyComponents';

3 个答案:

答案 0 :(得分:3)

使用以下语法:

File: layouts/index.js

export {default as Flex} from './flex'
export {default as Grid} from './grid'
export {default as Dock} from './dock'

然后你可以使用

import { Dock, Grid } from 'layouts'

import layouts from 'layouts'

<layouts.Flex >...</layouts.Flex>

为了导出由上述方法创建的嵌套索引,您可以使用export *语法:

File: icons/index.js

export * as action from './action';
export * as alert from './alert';
export * as av from './av';

用法:

import * as icons from 'material/icons'

<icons.action.Close />

答案 1 :(得分:1)

使用这种结构:

npm install babel-preset-stage-1 --save-dev

我们需要使用preset-stage-1

如何使用

  1. package.json
  2. 编辑文件stage-1并将presets添加到babel中的package.json部分。
  3. "babel": { "presets": [ "es2015", "stage-1", "react" ] },

    的示例
    {{1}}

    更多信息

    它是ECMAScript的提案 - https://github.com/leebyron/ecmascript-export-default-from (仍在审核中)

答案 2 :(得分:0)

只需使用export * from "./Button";导出整个模块即可。这将有助于您的使用案例。

不幸的是,没有单行语法只导出另一个模块的默认值。