When should I use curly braces for ES6 import?

This is a default import:

// B.js
import A from './A'

It only works if A has the default export:

// A.js
export default 42

In this case it doesn't matter what name you assign to it when importing:

// B.js
import A from './A
import  MyA from './A'
import Something from '.A'

Because it will always resolve to whatever is the default export of A.
This is a named import called A:

import { A } from '.A'

It only works if A contains a named export called A:

export const A = 42 

In this case the name matters because you're importing a specific thing by its export name:

// A.js
import { A } from './A'
import { myA } from './A'     // Does't work!
import { Something } from './A'    // Does't work!

To make these work, you would add a corresponding named export to A:

// A.js
export const A =42
export const myA = 43
export const Something = 44

A module can only have one default export, but as many named exports as you'd like (zero,one,two,or many).You can import them all together:

// B.js
import A { myA, Something } from './A'

Here, we import the default export as A, and named exports called myA and Something, respectively.

// A.js
export default 42
export const myA =43
export const Something = 44

We can also assign them all different names when import:

// B.js
import X, { myA as myX, Something as XSomething } from './A'

The default exports tend to be used for whatever you normally expect to get from the module. The named exports tend to be used for utilities that might be handy, but are't always necessay. However it is up to you to choose how to export things: for example, a module might have no default at all.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容