関数コンポーネント・コンポーネントとコンテナ

関数コンポーネント

今後はクラスコンポーネントではなく関数コンポーネントを優先して書いていく流れ、とのこと。

以前書いたクラスコンポーネントのコードを関数コンポーネントに書き換えてみた。

github.com

コンポーネントとコンテナ

Presentational Component を「コンポーネント」、Container Component を「コンテナ」と呼ぶことが多いらしい。

クラスと関数、とはまた別の側面の分類。

本文より一部抜粋↓

Presentational Component Container Component
コンポーネント 「コンテナ」
「どのように見えるか」に関心をもつ 「どのように機能するか」に関心をもつ
データやふるまいを Props として一方的に受け取る データやふるまいを他のコンポーネントに受け渡す
自身の状態はもたない(UIの状態はのぞく) しばしばデータの状態をもつ
データの変更に介入しない しばしばデータの変更に介入して、任意の処理をおこなう
ProsやFunctionalみたいなコード LocalStateみたいなコード

React らしいきれいなコンポーネントの作りかた

  • 関数コンポーネントで見た目だけを整えた Presentational Component をつくる
  • それをインポ ートして Hooks や HOC で必要な機能を追加していって、別途 Container Component をつくる