2016-03-08 74 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;