1

我是 ES6 模块系统的新手,所以这听起来很傻。

在使用 NativeBase 的React Native Starter App中,谁能解释一下怎么native-starter-kit/js/components/home/index.js

import myTheme from '../../themes/base-theme`;

当它从中导入的文件时, native-starter-kit/js/themes/base-theme.js没有任何export default变量代码myTheme

4

2 回答 2

4

您引用的第二个文件是整个导出默认值。第 5 行:

export default {

// Badge
badgeBg: '#ED1727',
badgeColor: '#fff',

...

}

因此,当他们这样做时,import myTheme from '../../themes/base-theme;他们myTheme为导入的模块选择了变量名。在这种情况下,转译器将寻找default导出。

如果他们会这样做,import { myTheme } from '../../themes/base-theme;那么就会出现问题,因为它没有在导出中明确命名。这样做不是指导出,default而是指明确调用的导出myTheme

我不确定我是否有道理,您可能想给https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/import一个阅读

于 2016-12-09T21:05:49.887 回答
2

没有默认导出意味着它是一个命名的导出

您可以在一个文件中拥有多个命名导出。

示例 1: export class Theme {}

在这里,您必须使用其确切名称导入此导出。

要在其他文件中使用此组件,您应该这样做, import { Theme } from '../../themes/base-theme'

示例 2:

如果您导出为默认导出为, export default class Theme {}

然后在另一个文件中导入默认导出而不使用 {},如下所示, import Theme from '../../themes/base-theme'

每个文件只能有一个默认导出。

尽管它的 React 约定从文件中导出一个组件,并将其导出为默认导出。

您可以在导入时随意重命名默认导出。 import myTheme from '../../themes/base-theme'

于 2016-12-12T06:41:08.877 回答