Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我必须在React中指定两次默认导出?_Javascript_Reactjs - Fatal编程技术网

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-like
      export-const-myFunc=()=>{}的示例
      添加到您的答案中,以显示它应该如何工作。好主意。为了完整性,我添加到了答案中。感谢第二个代码段使用了命名导出。第二个代码段是OP询问更改后为什么不起作用的代码段。导出*,导入按钮的所有命名导出,并从索引中重新导出它们。您是对的。也许您可以添加一个名为export的示例,例如
      export const myFunc=()=>{}
      添加到您的答案中,以显示它应该如何工作。好主意。为了完整性,我在答案中添加了。感谢您取代了有效的
      导出默认按钮
      do
      export const Buttons=…
      ,谢谢!而不是有效的
      导出默认按钮
      do
      导出const Buttons=…
      ,谢谢!
      module.exports = {
         default: 'someValue',
         namedExportVariableName: 'probablySomeFunction'
      }