2016-12-27 126 views
6

使用大括号我可以看到有两种不同的方式导入什么是ES6 import语句

import React from 'react' 
import { render } from 'react-dom' 

第二个有支架。那么两者有什么区别?何时添加括号?谢谢

+0

建议阅读http://www.2ality.com/2014/09/es6-modules-final.html没有必要问这个问题SO –

+0

简要回答:这是es6解构正在发挥作用。 'var React'将被分配给从''react''导出的所有东西,并且'var render'将被分配给'react-dom''输出的任何'render'属性。 – therobinkim

+2

[When should我使用大括号ES6导入?](http://stackoverflow.com/questions/36795819/when-should-i-use-curly-braces-for-es6-import) – jpdelatorre

回答

8

那么你是否应该导入你的组件within brackets or without it的区别在于你的方式你export它。

有两种类型的出口

  1. 默认出口
  2. 名称导出

一个组件可以one default export and zero or more named出口

如果一个组件是一个默认的出口,那么你需要导入它没有括号 例如

export default App; 

进口它作为

import App from './path/to/App'; 

命名的出口也能像

export const A = 25; 

export {MyComponent}; 

的,你可以导入为

import {A} from './path/to/A'; 

import {A as SomeName} from './path/to/A'; 

如果您的组件有一个默认的导出和几个名为export,你甚至可以混合在一起他们,而在reactreact-domReact和案例导入

import App, {A as SomeName} from './path/to/file'; 

同样ReactDOM分别是default exports,而例如Component是中​​的和renderreact-dom中的命名导出。这就是原因,你可以做

import ReactDOM from 'react-dom'; 

然后用

ReactDOM.render() 

或者用它喜欢在你的问题中提到。

+0

这个答案似乎非常明确...... * *一个**默认导出**加**多个命名导出(允许每个脚本文件)...然后导入默认导出:无大括号,导入命名导出:必须使用大括号。是官方参考之一https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export? (ES6标准的一部分) –

0

如果您导出为默认值,则无需添加括号。您只能在模块中使用默认值。

情形1:

出口缺省功能(NUM1,NUM2){ 返回NUM1 + NUM2; }

情形2:

函数sum(NUM1,NUM2){ 返回NUM1 + NUM2; }

export {sum as default};

情形3:

函数sum(NUM1,NUM2){ 返回NUM1 + NUM2; }

export default sum;

你可以从 “./test.js” 导入默认

进口总和;

console.log(sum(1,2));

0

考虑​​,

export default (a, b) => a + b; 
export const sub = (a, b) => a - b; 
export const sqr = a => a**2; 

它可以导入像这样,

import sum, { sub, sqr } from './primitives'; 

在这种情况下,sum被称为 “默认导出” 和模块可以包含一个单一的“默认导出“。

subsqr被称为“命名导出”,并且一个模块可能包含多个命名导出。