Container Component & Presentational Component

react-reduxを使う際に、良しとされているコンポーネント分離の考え方。
最近ではHooksを利用するやり方も?

🏖Container Component

・ReactとReduxの連携役
・ReduxからActionやStateを受け取ってPropsとして渡す
・JSXを入れない
・ラップ用のdivを除いて、自身のDOMマークアップはない
・スタイルもない
・react-reduxのconnect関数を利用する
・ロジックに関与する

🏝Presentational Component

・見た目のみを扱う
・純粋Reactコンポーネント
・Propsをもらってデータを表示するだけ
・Redux依存無し
・データやボタンハンドラを外部から指定されるので、再利用性高い
・ロジックは切り離される
・稀に独自stateを持つが、データではなく、そのUI自体の状態(例: ドロップダウンの開閉状態)を管理
・state, ライフサイクル、パフォーマンス向上を必要とする場合以外、基本的にはFunctional Componentとして記述する

参考

medium.com