首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >index.js文件如何在React组件目录中工作?

index.js文件如何在React组件目录中工作?
EN

Stack Overflow用户
提问于 2017-05-21 01:30:38
回答 3查看 100.6K关注 0票数 99

我刚刚启动了一个新的React项目,并决定使用模式,该模式基本上根据文件各自的组件对文件进行分组:

代码语言:javascript
复制
├── actions
│   ├── LaneActions.js
│   └── NoteActions.js
├── components
│   ├── App
│   │   ├── App.jsx
│   │   ├── app.css
│   │   ├── app_test.jsx
│   │   └── index.js
│   ├── Editable
│   │   ├── Editable.jsx
│   │   ├── editable.css
│   │   ├── editable_test.jsx
│   │   └── index.js
...
│   └── index.js
├── constants
│   └── itemTypes.js
├── index.jsx
├── libs
│   ├── alt.js
│   ├── persist.js
│   └── storage.js
├── main.css
└── stores
    ├── LaneStore.js
    └── NoteStore.js

让我困惑的是,在这种情况下,index.js是如何工作的。如前所述:

index.js文件可以为组件提供简单的入口点。尽管它们增加了噪音,但它们简化了进口。

这篇文章没有做的是深入了解这些文件中的内容。在可编辑组件的情况下,Editable.jsxindex.js理想的样子是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-21 02:02:49

这个确切的结构表明,例如,Editable组件将在Editable.jsx中包含该组件的所有内容。我的意思是你的组件代码保存在那个文件里。

指数是用来干什么的?在索引中,您只需执行如下操作:

代码语言:javascript
复制
import Editable from './Editable.jsx';

export default Editable;

仅此而已。这很有帮助,因为在其他组件或容器中,您可以这样做:

代码语言:javascript
复制
import Editable from '../Editable';

因为它在默认情况下尝试访问index.js文件,因此不需要您提供更多的信息。它将自动导入导入实际组件本身的index.js文件。如果您没有index.js文件,就必须这样做:

代码语言:javascript
复制
import Editable from '../Editable/Editable';

这有点尴尬。我不希望有一个索引文件,它所做的就是导入一个组件并导出它。我通常所做的就是将我的所有组件代码都放在index.js文件中,而根本不需要Editable.jsx。这取决于你,所以你可以随意采取你更喜欢的方法。

票数 128
EN

Stack Overflow用户

发布于 2019-05-27 21:26:57

如果每个组件模式都使用这个目录,寻找一种干净的方式来组织和访问模块,那么上面使用默认导出的示例将无法处理多个文件,例如,这个结构包含一个还原目录:

代码语言:javascript
复制
── reducers
│   ├── todoReducer.js
│   └── filterReducer.js
│   └── themeReducer.js
│   └── index.js
├── components
    ├── App.js
    ├── app.css
    └── index.js

所以减缩器/index.js看起来如下所示:

代码语言:javascript
复制
// index.js
import filterReducer from './filterReducer';
import todoReducer from './todoReducer';
import theme from './themeReducer';

export { filterReducer, todoReducer, theme };

...whether最初在其原始文件中导出为默认文件或命名文件,现在它们被命名为导出,并且可以在App.js中干净地使用,如下所示:

代码语言:javascript
复制
// App.js
import { filterReducer, todoReducer, theme } from '../reducers';

所以我们可以避免所有这些噪音:

代码语言:javascript
复制
import filterReducer from './reducers/filterReducer';
import todoReducer from './reducers/todoReducer';
import theme from './reducers/theme';
票数 36
EN

Stack Overflow用户

发布于 2018-08-09 23:17:32

你也可以利用它的模块命名空间,例如。

代码语言:javascript
复制
//MyNamespace/index.js

import Mod1 from './Mod1' //assumes ./Mod1.js
import Mod2 from './Mod2' //assumes ./Mod2.js

export{
  Mod1,
  Mod2
}

然后,在其他文件中,您可以使用命名空间导入:

代码语言:javascript
复制
//SomeOtherFile.js

import * as NamespaceToUse from './MyNamespace'

// Then access as:
NamespaceToUse.Mod1
NamespaceToUse.Mod2
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44092341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档