希望能够直接从components
目录导入components
目录中的任何组件。
当前目录结构为:
src
├── components
│ ├── Camera.tsx
│ ├── Keyboard.tsx
│ └── index.ts
└── screens
└── App.tsx
并希望能够导入如下内容:
// src/screens/App.tsx
import { Keyboard } from '../components'
第一个选项显然是在src/components/index.ts
中维护一个长输出列表:
// src/components/index.ts
export { Camera } from './Camera'
export { Keyboard } from './Keyboard'
但是,维护起来很麻烦。是否有一种方法使用glob
和导出对象来自动导出所有组件,或者可能是另一种方法?
你可以这样编辑你的index.ts
src
├── components
│ ├── Camera.tsx
│ ├── Keyboard.tsx
│ └── index.ts <=== this file
└── screens
└── App.tsx
export * from './Camera'
export * from './Keyboard'
既然你正在使用TypeScript,为什么不像这里描述的那样在TsConfig中使用paths
呢?
在本例中,您需要在components
目录中创建一个index.ts
文件。
首先,导入其中的所有组件:
import Camera from './Camera'
import Keyboard from './Keyboard'
// and so on for other components
现在,导出所有的
import Camera from './Camera'
import Keyboard from './Keyboard'
export Camera;
export Keyboard;
可以这样简化:
export Camera from './Camera'
export Keyboard from './Keyboard'
最后,使用'。/components的路径来导入Camera
和其他组件:
import { Keyboard, Camera } from '../components'
注1:使用这种类型的imports/exports
将导致代码分裂或使用Suspense/Lazy
方法的问题。
注2:使用一般索引文件调试会比较困难。