hario@harionote:~/blog$ glow articles/article-20230701.md

File: articles/article-20230701.md1.8Kmarkdown

---
date: tags: [#react-typescript]
---

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

やりたいこと

例えばコンポーネントAaa, Bbb, Cccがあったとして

app/
┣ components/
┃  ┣ Aaa.tsx
┃  ┣ Bbb.tsx
┃  ┗ Ccc.ts
┗ page.tsx

のような構成でpage.tsxからそれぞれをインポートして使うと

tsx
import Aaa from './components/Aaa'
import Bbb from './components/Bbb'
import Ccc from './components/Ccc'

みたいな感じになると思います。

これを

tsx
import { 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
/* 普通にexport */
export const Aaa: React.FC = () => {
tsx
/* default export */
const Bbb: React.FC = () => {

export default Bbb;

index.tsでexportをまとめる

先程のexportしたコンポーネントをまとめます。
書き方はexportしたかdefault exportしたかで変わります。
先程のAaaとBbbに加えて、Cccもdefault exportしたとした場合の例とするとindex.tsを以下のようにします。

ts
 /* exportした場合は↓のように書く */
export * from './Aaa'
/* default exportした場合は↓のように書く */
export { default as Bbb } from './Bbb'
export { default as Ccc } from './Ccc'

これで先程のようにpate.tsxにて

tsx
import { Aaa, Bbb, Ccc } from './components'

といった感じでインポートして使えます。

share:

sponsored

whoami

Hario

最近はReactとかNext.jsとかをよくさわってるただのエンジニアです。開発関連の記事が多めですが、ガジェットも好きだったりします。たまにそれらとは全然関係ない記事も書いたりもします。

hario@harionote:~/blog$