2016-03-08 75 views
7
import {Component, ...actions} from '../MyModule'; 

似乎是拋出linting錯誤。是否有一個原因讓你無法在ES6導入聲明中「傳播」?Destructure傳播進口ES6

+0

你認爲解構要做什麼?給你所有其他出口減去'組件'? – nils

+1

查看規範:http://www.ecma-international.org/ecma-262/6.0/#sec-imports _NamedImports_的符號可能看起來像對象符號,但它有些不同(這就是爲什麼沒有解構)。如果_MyModule_導出一個對象,你可以在一個賦值中進行解構。 – Matthisk

+1

主要是因爲傳播運營商不是ES6的一部分,而是針對未來版本的提案。 – Bergi

回答

13

ES6導入語法不解構,就像那樣簡單。語法以{開頭,但其格式完全不同,並且在實現中處理的方式完全不同。例如,您可以用

import {Component as MyComponent} from './MyModule'; 

重命名進口,這顯然不是對象字面量。

如果你需要一個對象,你可以用它來引用進口的屬性,你可以做

import * as MyModule from '../MyModule'; 

然後使用MyModule.<exportName>。如果您的目標是專門獲取包含所有導出值的對象,但不包括Component,那麼您總是可以在解除綁定之後進行解構。

const {Component, ...actions} = MyModule;