Javascript 如何使用React导出组件?命名vs默认值

Javascript 如何使用React导出组件?命名vs默认值,javascript,reactjs,ecmascript-6,module,Javascript,Reactjs,Ecmascript 6,Module,我在许多文件中看到过这种语法: import React, {Component} from react; 我了解命名导出和默认导出是如何分别工作的,但我不确定React在导出代码时如何处理这一问题 例如,默认的React导出是将包含组件的对象作为命名的导出函数进行导出吗?这就是为什么您可以使用React.Component点符号?正如您所提到的React是默认的模块导出,并且组件包含在React模块中。因此,您可以通过执行方法调用React.Component来使用组件,也可以使用impor

我在许多文件中看到过这种语法:

import React, {Component} from react;
我了解命名导出和默认导出是如何分别工作的,但我不确定React在导出代码时如何处理这一问题


例如,默认的React导出是将包含组件的对象作为命名的导出函数进行导出吗?这就是为什么您可以使用React.Component点符号?

正如您所提到的React是默认的模块导出,并且组件包含在React模块中。因此,您可以通过执行方法调用React.Component来使用组件,也可以使用import{Component}作为单独的函数导入到

编辑:看一下屏幕上的第17行。它已经被导入到React.js中,因此您可以用不同的方式导入模块


从“/ReactBaseClasses”导入{Component,PureComponent}

也许此文件回答了您的问题:“默认导出是否为对象”-是。“…其中包含组件”-是。“…作为命名导出”-呃,不,一个对象包含未命名导出的对象属性?@ClaireLin为它做一个单独的回答是值得的。我会的upvote@Bergi在这种情况下,对象的属性是否隐式导出,以便可以用作命名导入?在我读过的一些关于模块的教程中,我没有遇到过这种情况。@jobe没有,模块中没有任何隐含的内容,如果您想将某些内容导出为默认导出对象的属性和命名导出,那么您需要显式地这样做。然而,它似乎依赖于一个运输机来计算进口。React是ES6模块使用的一个非常糟糕的例子,在最佳实践还没有完全弄清楚的时候,他们是早期采用者,现在他们无法改变他们为向后兼容性所做的事情。