カテゴリ: React 更新日: 2026/01/20

関数コンポーネントとクラスコンポーネントの違いを解説!初心者でもわかるReactの基本構造

関数コンポーネントとクラスコンポーネントの違いを解説
関数コンポーネントとクラスコンポーネントの違いを解説

先生と生徒の会話形式で理解しよう

生徒

「Reactで『関数コンポーネント』と『クラスコンポーネント』って出てきたんですが、何が違うんですか?」

先生

「Reactでは、画面の部品であるコンポーネントを作る方法として、関数を使う方法とクラスを使う方法があります。」

生徒

「初心者にはどっちがおすすめなんですか?」

先生

「最近は関数コンポーネントが主流です。では、違いをわかりやすく解説していきましょう!」

1. 関数コンポーネントとクラスコンポーネントとは?

1. 関数コンポーネントとクラスコンポーネントとは?
1. 関数コンポーネントとクラスコンポーネントとは?

関数コンポーネントクラスコンポーネントは、どちらもReactで使われる「画面の部品(UIパーツ)」を作る方法です。

どちらも「見た目」と「動き」を定義する役割を持っていますが、書き方と使い方に違いがあります。特に初心者の方にとっては、関数コンポーネントのほうがシンプルで分かりやすいでしょう。

Reactの開発初期ではクラスコンポーネントが使われていましたが、今では関数コンポーネントにuseStateuseEffectといったフック(Hook)が導入されたため、より柔軟に使えるようになりました。

2. 関数コンポーネントの書き方

2. 関数コンポーネントの書き方
2. 関数コンポーネントの書き方

関数コンポーネントは、JavaScriptの関数として書きます。とてもシンプルで読みやすいのが特徴です。


import React from "react";

function Hello() {
  return <h1>こんにちは!</h1>;
}

export default Hello;
(画面に「こんにちは!」と表示されます)

このように、functionを使ってHTMLのようなコード(JSX)を返すだけで、Reactの部品として使えるのです。

3. クラスコンポーネントの書き方

3. クラスコンポーネントの書き方
3. クラスコンポーネントの書き方

クラスコンポーネントは、classという文法を使って作ります。少し長くて複雑に見えるかもしれませんが、やっていることは関数コンポーネントと同じです。


import React, { Component } from "react";

class Hello extends Component {
  render() {
    return <h1>こんにちは!</h1>;
  }
}

export default Hello;
(画面に「こんにちは!」と表示されます)

render()というメソッドの中で、JSXを返しています。Reactの古い書き方ではこのように書いていました。

4. 状態(state)の違いを見てみよう

4. 状態(state)の違いを見てみよう
4. 状態(state)の違いを見てみよう

Reactでは、「状態(state)」を使うことで、画面の中身を動的に変えることができます。関数コンポーネントではuseState、クラスコンポーネントではthis.stateを使います。

関数コンポーネントでの状態管理


import React, { useState } from "react";

function App() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>クリック数: {count}</p>
      <button onClick={() => setCount(count + 1)}>クリック</button>
    </div>
  );
}

export default App;
(画面に「クリック数: 0」と表示され、ボタンを押すたびに数が増えます)

クラスコンポーネントでの状態管理


import React, { Component } from "react";

class App extends Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  render() {
    return (
      <div>
        <p>クリック数: {this.state.count}</p>
        <button onClick={() => this.setState({ count: this.state.count + 1 })}>
          クリック
        </button>
      </div>
    );
  }
}

export default App;
(画面に「クリック数: 0」と表示され、ボタンを押すたびに数が増えます)

クラスコンポーネントではthis.statethis.setState()などの書き方が必要になり、少し複雑に感じるかもしれません。

5. 今は関数コンポーネントが主流です

5. 今は関数コンポーネントが主流です
5. 今は関数コンポーネントが主流です

Reactでは昔からあるクラスコンポーネントもまだ使えますが、現在では関数コンポーネントが主に使われています。その理由は以下の通りです:

  • コードが短く、読みやすい
  • useStateuseEffectなどのフック(Hooks)が使える
  • 学習コストが低く、初心者でも扱いやすい
  • 公式ドキュメントでも関数コンポーネントが中心

そのため、これからReactを学ぶ方は関数コンポーネントだけを覚えておけば十分です。

6. 違いを表にして比較してみよう

6. 違いを表にして比較してみよう
6. 違いを表にして比較してみよう

最後に、関数コンポーネントとクラスコンポーネントの違いを簡単な表でまとめてみましょう。

比較項目 関数コンポーネント クラスコンポーネント
書き方 関数(function) クラス(class)
状態(state)の管理 useState this.state
イベント処理 シンプルに記述可能 thisの扱いが複雑
おすすめ度 初心者向け・主流 古いコードで使用

このように、今のReact開発では関数コンポーネントが中心です。これからReactを始める人は、まず関数コンポーネントに慣れることから始めましょう。

まとめ

まとめ
まとめ

この記事では、Reactの関数コンポーネントとクラスコンポーネントの違いについて、基本的な書き方から状態管理まで解説しました。関数コンポーネントはシンプルで読みやすく、useStateuseEffectといったフックを使うことで、状態管理や副作用の処理も簡単に行えます。一方、クラスコンポーネントはthis.statethis.setState()を使って状態を管理し、render()メソッド内でJSXを返す必要があります。

初心者にとっては、コード量が少なく、学習コストが低い関数コンポーネントを覚えることが最も効率的です。また、Propsを使ったデータ受け渡しやStateを使った動的な画面更新の仕組みを理解しておくと、より複雑なUIでもスムーズに開発できます。クラスコンポーネントは古いコードベースで見かけることがありますが、新規開発では関数コンポーネントを中心に使うのが現実的です。

状態管理の例では、関数コンポーネントでuseStateを使ったカウンターを作ることで、ユーザーの操作に応じた動的な表示が可能になることを確認しました。また、クラスコンポーネントでも同じ動きをthis.statethis.setState()を使って実装できます。これにより、コンポーネントの役割と状態管理の仕組みの違いが理解できます。

サンプルプログラムで振り返り

import React, { useState } from "react";

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>現在のカウント: {count}</p>
      <button onClick={() => setCount(count + 1)}>カウントを増やす</button>
    </div>
  );
}

export default Counter;
(画面に「現在のカウント: 0」と表示され、ボタンを押すたびに1ずつ増えます。関数コンポーネントでのState管理の基本を確認できます)
先生と生徒の振り返り会話

生徒

「関数コンポーネントはシンプルで、StateやPropsの扱いもわかりやすいですね。」

先生

「その通りです。初心者がまず触るなら関数コンポーネントが最適です。フックを使うとState管理も簡単にできます。」

生徒

「クラスコンポーネントは昔の書き方ですが、State管理が複雑で少し難しいですね。」

先生

「そうですね。しかし古いコードや既存のプロジェクトではまだ使われていますので、仕組みだけ理解しておくと役立ちます。」

生徒

「PropsとStateを正しく使い分ければ、動的でインタラクティブな画面も作れるんですね。」

先生

「その通りです。関数コンポーネントの理解を中心に、PropsとStateの仕組みを押さえることで、Reactの開発がスムーズになります。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Reactの関数コンポーネントとは何ですか?

Reactの関数コンポーネントは、JavaScriptの関数として記述されるコンポーネントのことです。JSXを返すことで、UIの部品を定義できます。コードがシンプルで初心者にも扱いやすいのが特徴です。
カテゴリの一覧へ
新着記事
New1
React
Reactコンポーネントの再利用と分割を完全マスター!初心者でもわかるコンポーネント設計
New2
React
ReactでAxiosインターセプターの使い方を完全ガイド!初心者でもわかるリクエストとレスポンスの処理方法
New3
React
JSXの書き方!初心者でもわかるReactタグと属性の基本ルール解説
New4
React
ReactとDockerを使った開発環境構築の基本を徹底解説!初心者でもわかるReactとDockerの連携方法
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.3
Java&Spring記事人気No3
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.4
Java&Spring記事人気No4
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.5
Java&Spring記事人気No5
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.6
Java&Spring記事人気No6
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.7
Java&Spring記事人気No7
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.8
Java&Spring記事人気No8
React
Reactでファイルアップロードを実装する方法を解説!Fetch APIで画像やPDFを送る仕組みを初心者向けに紹介