为什么这些导出语句中的某些失败?

时间:2017-05-12 16:11:12

标签: javascript

民间,

我很好奇,为什么会这样:

export default translate(['header'], { wait: true })(Component)

或者这样做:

let NewComponent  = translate(['header'], { wait: true })(Component)
export {NewComponent}

但这不是:

export translate(['header'], { wait: true })(Component)

这也不是:

export {translate(['header'], { wait: true })(Component)} /* ERRORS */

1 个答案:

答案 0 :(得分:3)

供参考:Guide on exports from MDN

有两种类型的导出:命名和默认。

在您的无效示例中,以下导出:

export translate(['header'], { wait: true })(Component)

...不起作用,因为表达式的结果无法识别为命名导出(您没有给它命名),并且它没有标记为{{1} }。如果您在将其与默认设置的第一个示例进行比较时,如果您对此有何不同感到好奇,请考虑如何在导入中引用它:

default

以下出口:

// Valid example

// exporting in exports.js
export default translate(['header'], { wait: true })(Component);

// importing it another file
import translateResult from './exports.js';



// Invalid example

// exporting in exports.js
export translate(['header'], { wait: true })(Component);

// importing in another file
// since it's not named, and there is no default, it has no reference.
import ?? from './exports.js';
import { ?? } from './exports.js';

...因为它在语法上不正确而无法正常工作。但是,如果你事先命名了这个表达式的结果,它就不会抛出错误(至少不是因为导出):

export {translate(['header'], { wait: true })(Component)} /* ERRORS */