関数コンポーネント・コンポーネントとコンテナ
関数コンポーネント
今後はクラスコンポーネントではなく関数コンポーネントを優先して書いていく流れ、とのこと。
以前書いたクラスコンポーネントのコードを関数コンポーネントに書き換えてみた。
コンポーネントとコンテナ
Presentational Component を「コンポーネント」、Container Component を「コンテナ」と呼ぶことが多いらしい。
クラスと関数、とはまた別の側面の分類。
本文より一部抜粋↓
Presentational Component | Container Component |
---|---|
「コンポーネント」 | 「コンテナ」 |
「どのように見えるか」に関心をもつ | 「どのように機能するか」に関心をもつ |
データやふるまいを Props として一方的に受け取る | データやふるまいを他のコンポーネントに受け渡す |
自身の状態はもたない(UIの状態はのぞく) | しばしばデータの状態をもつ |
データの変更に介入しない | しばしばデータの変更に介入して、任意の処理をおこなう |
ProsやFunctionalみたいなコード | LocalStateみたいなコード |
React らしいきれいなコンポーネントの作りかた
- 関数コンポーネントで見た目だけを整えた Presentational Component をつくる
- それをインポ ートして Hooks や HOC で必要な機能を追加していって、別途 Container Component をつくる