Javascript 为什么我必须在React中指定两次默认导出?
我的项目的当前设置如下所示:Javascript 为什么我必须在React中指定两次默认导出?,javascript,reactjs,Javascript,Reactjs,我的项目的当前设置如下所示: src/components/Buttons.jsx: const按钮=()=>{ 常数数据=[ ... ]; 返回( ... ); }; 导出默认按钮; src/components/index.jsx: 从“/Buttons”导出{默认为按钮}; src/index.jsx: 。。。 从“/components”导入{关于、按钮、图片、图标}; ReactDOM.render( , ... ); 每当我将src/components/index.jsx更
src/components/Buttons.jsx
:
const按钮=()=>{
常数数据=[
...
];
返回(
...
);
};
导出默认按钮;
src/components/index.jsx
:
从“/Buttons”导出{默认为按钮};
src/index.jsx
:
。。。
从“/components”导入{关于、按钮、图片、图标};
ReactDOM.render(
,
...
);
每当我将src/components/index.jsx更改为
export*from./Buttons';
我收到错误:尝试导入错误:“按钮”未从“./components”导出。
- 为什么必须在同一组件的两个不同位置指定默认导出
- 为什么我不能使用
export*from./Buttons'代码>而不获取错误
- 这是设计的。
export*
和import*
仅导入文件的命名导出
如果您希望从“./Buttons”导出*
,那么在Buttons.jsx中,您应该导出常量按钮=()=>{
如果从未从“/components/Buttons”导入类似的导入按钮
,则可以放弃默认导出(导出默认按钮
),因为您并不真正需要它。这是出于设计。
export*
和import*
仅导入文件的命名导出
如果您希望从“./Buttons”导出*
,那么在Buttons.jsx中,您应该导出常量按钮=()=>{
如果从未从“/components/Buttons”导入类似的
导入按钮
,则可以删除默认导出(导出默认按钮
)因为你并不真的需要它。它来自于与模块的兼容性。导出,也就是旧版本的javascript。如果需要,你的React现在可以在IE6上传输
对于modules.exports,文件“通常”会返回一个对象,该对象带有任何不同值的键。这是默认值
和单数导出
default
是指向该对象的一个额外键,您可以像导出默认变量名一样导出该对象,并作为导入默认变量名和cannameitationthingiwanttobe、{aNormalExportVariableName和secondairyone}从“/blah”
导入
您试图做的是“破解”以下内容:
默认
键,并使用as
语句将其重命名为另一个键。它来自与模块的兼容性。导出
,即旧版本的javascript。如果需要,您的React现在可以为IE6传输
对于modules.exports,文件“通常”会返回一个对象,该对象带有任何不同值的键。这是默认值
和单数导出
default
是指向该对象的一个额外键,您可以像导出默认变量名一样导出该对象,并作为导入默认变量名和cannameitationthingiwanttobe、{aNormalExportVariableName和secondairyone}从“/blah”
导入
您试图做的是“破解”以下内容:
default
键,并使用as
语句将其重命名为另一个键。第二个代码段使用命名导出。第二个代码段是OP在更改时询问为什么不起作用的代码段。export*,导入按钮的所有命名导出,然后从索引中重新导出。您是对的。也许您可以添加一个名为export-likeexport-const-myFunc=()=>{}的示例
添加到您的答案中,以显示它应该如何工作。好主意。为了完整性,我添加到了答案中。感谢第二个代码段使用了命名导出。第二个代码段是OP询问更改后为什么不起作用的代码段。导出*,导入按钮的所有命名导出,并从索引中重新导出它们。您是对的。也许您可以添加一个名为export的示例,例如export const myFunc=()=>{}
添加到您的答案中,以显示它应该如何工作。好主意。为了完整性,我在答案中添加了。感谢您取代了有效的导出默认按钮
doexport const Buttons=…
,谢谢!而不是有效的导出默认按钮
do导出const Buttons=…
,谢谢!
module.exports = {
default: 'someValue',
namedExportVariableName: 'probablySomeFunction'
}