LoginSignup
4
2

More than 3 years have passed since last update.

【React】Hooks時代のディレクトリ構成案

Last updated at Posted at 2021-01-09

注意

2021/1現在、本ディレクトリ構成にて運用中のため、適宜メリット・デメリットを追記してゆく。
また、本ディレクトリ構成での運用に不都合が発覚した場合、ディレクトリ構成は変更の可能性あり。

編集履歴

  • 1/9 本記事を作成

対象のシステム

客先などに提供するため実装・試験まできちんとしなければならないが、アトミックデザインにするほどでもないな〜といった感じのシステム。
以下、作成するシステムの前提を記載。

  • create-react-appする
  • TypeScriptで実装する
  • Reduxは使わないがuseReducerを使う
  • レンダリングとロジックを分離させるため、PresentationComponentとContainerComponentは分ける
  • ユニットテストはjestを利用し、ContainerComponent、カスタムフックのC1カバレッジを100%にする
  • メッセージはcomponentとは別のファイルで定義する

ディレクトリ構成案

app/
 ┗ src/
    ┠ Components/
    ┃        ┠ Presentations/  //画面表示に関するファイル
    ┃        ┗ Containers/     //ロジックに関するファイル
    ┠ Hooks/                   //カスタムフック
    ┠ Actions/                 //useReducerで利用するAction
    ┠ Models/                  //複数のコンポーネント間で共有するinterface
    ┠ Message/                 //エラーメッセージなど
    ┠ App.tsx
    ┠ index.tsx
    ┗ Tests/                   //ユニットテストに関するファイル

メリット

  • ユニットテスト実行時はContainerディレクトリ、Hooksディレクトリ内のファイルを対象に行えばよい
  • コンポーネント間でAction、Model(interfaceなど)を共有しやすい
  • コンポーネント数がある程度大きくなっても対応できる

デメリット(課題)

  • ディレクトリ構成からはPresentationComponentとContainerComponentの関連が推測できない(ファイル名によって推測するしかない)
4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2