【React/TypeScript】複数のコンポーネントのexportをindex.tsにまとめてimportをいい感じにする方法の備忘録

やりたいこと
例えばコンポーネントAaa, Bbb, Cccがあったとして
app/
┣ components/
┃ ┣ Aaa.tsx
┃ ┣ Bbb.tsx
┃ ┗ Ccc.ts
┗ page.tsx
のような構成でpage.tsxからそれぞれをインポートして使うと
tsx
1import Aaa from './components/Aaa'
2import Bbb from './components/Bbb'
3import Ccc from './components/Ccc'みたいな感じになると思います。
これを
tsx
1import { Aaa, Bbb, Ccc } from './components'みたいにインポートできるようするための備忘録です。
ディレクトリ構成
最初のやつにindex.tsを追加して以下のようにします。
app/
┣ components/
┃ ┣ Aaa.tsx
┃ ┣ Bbb.tsx
┃ ┣ Ccc.tsx
┃ ┗ index.ts
┗ page.tsx
各コンポーネントのexport
コンポーネントのexportのやり方はとくに特別なことは不要で、普通にexportするかdefault exportでokです。
tsx
1/* 普通にexport */
2export const Aaa: React.FC = () => {
3(略)tsx
1/* default export */
2const Bbb: React.FC = () => {
3(略)
4export default Bbb;index.tsでexportをまとめる
先程のexportしたコンポーネントをまとめます。
書き方はexportしたかdefault exportしたかで変わります。
先程のAaaとBbbに加えて、Cccもdefault exportしたとした場合の例とするとindex.tsを以下のようにします。
ts
1/* exportした場合は↓のように書く */
2export * from './Aaa'
3/* default exportした場合は↓のように書く */
4export { default as Bbb } from './Bbb'
5export { default as Ccc } from './Ccc'これで先程のようにpate.tsxにて
tsx
1import { Aaa, Bbb, Ccc } from './components'といった感じでインポートして使えます。
Share this post