[React] エントリーポイント

Reactでコンポーネントを多く作っていくと、毎回importするのが大変になってきます。可読性も悪くなるので一つのところに記載しておいて、それを一行でインポートするのが理想的です。もちろんReactにはこのような機能が搭載されています。

エントリーポイントとして使われるのが「index.js」「index.tsx」です。

コンポーネントディレクトリの中に、以下のようにコンポーネントファイルが複数有る場合を想定します。
./components
Component1.js
Component2.js
Component3.js
Component4.js
Component5.js
Component6.js
Component7.js

エン トリーポイントを使わないでApp.jsにインポートするとこのようになります。

import Components1 from "./Components1"
import Components2 from "./Components2"
import Components3 from "./Components3"
import Components4 from "./Components4"
import Components5 from "./Components5"
import Components6 from "./Components6"
import Components7 from "./Components7"

毎回、これを書くのは大変です。

index.js(index.tsx)を作成

エントリーポイント用のファイルとして index.tsxを作成します。

export {default as Components1} from './Components1';
export {default as Components2} from './Components2';
export {default as Components3} from './Components3';
export {default as Components4} from './Components4';
export {default as Components5} from './Components5';
export {default as Components6} from './Components6';
export {default as Components7} from './Components7';

index.tsxに記載する場合はimport文ではなく、exportになるので注意です。

App.jsでエントリーポイントを読み込む

import * from './index';

importとfromの間の*(アスタリスク)はすべてのファイルを読み込むという意味になります。

defaultの意味

exportにはdefault exportと別名exportがありますが、defalult exportの場合は名前がdefaultになります。
Components1、Components2…というコンポーネントがあっても全てdefaultという名前になってしまい区別がつきません。よって、「index.js(index.tsx)」に記述するときはexport defaultにエイリアスで名前をつけます。 {default as Components1}の部分がエイリアスによる命名になります。



Author: webmaster