我是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
的任何代码?
答案 0 :(得分: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
导出,而是指明确调用$( '.navigation' ).find( 'li.active' ).parents( 'li' ).addClass( 'active' );
我不确定我是否有道理,您可能想要https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/import阅读
答案 1 :(得分: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'