はじめに
本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
クラスコンポーネントと関数コンポーネント
コンポーネントとは
コンポーネントとは、UIの一部となる見た目(View)と機能(Controller)を合わせたものです。
コンポーネントを組み合わせることで一つのページを作ります。
コンポーネント単位とすることで以下の利点があります。
- 再利用することができる
- 再利用することで見た目や機能が統一できる
- 再利用することで変更したい場合に修正する箇所が減り、管理がしやすくなる
このコンポーネントの定義の仕方には以下の2種類があります。
- クラスコンポーネント
- 関数コンポーネント
クラスコンポーネントの記述方法
クラスコンポーネントは以下のように記述します。
class App extends React.Component {
constructor(props) {
super(props);
}
render() {
return <div>I'm {this.props.name}</div>
}
}
クラスコンポーネントは、以下のような特徴があります。
- React.Componentを継承する。
- constructorでpropを受け取る。
- renderメソッド内でJSXをreturnする。
- ライフサイクルやstateを持つ。
最後の「ライフサイクルやstateを持つ」については、現在はHooksが登場し、後述する関数コンポーネントに記述することができるようになったため、現在はあまりクラスコンポーネントを使わないようです。
関数コンポーネントの記述方法
関数コンポーネントは以下のように記述します。
const App = (props) => {
return <div>I'm {props.name}</div>
}
関数コンポーネントには、以下のような特徴があります。
- 関数内でJSXをreturnする
- 引数でpropsを受け取る
- ライフサイクルやstateを持たない
前述の通り、ライフサイクルやstateについては、Hooksの登場により、関数コンポーネントも持てるようになりました。
そのため、現在では、こちらの関数コンポーネントがメインで使われているようです。
まとめ
- コンポーネントとは、UIの一部となる見た目(View)と機能(Controller)を合わせたもの
- コンポーネントには、クラスコンポーネントと関数コンポーネントがある
- React Hooksの登場により、現在では関数コンポーネントがメイン