カテゴリ: React 更新日: 2025/12/28

React Hooksとは?クラスコンポーネントから進化した仕組みをやさしく解説

React Hooksとは?クラスコンポーネントから進化した仕組み
React Hooksとは?クラスコンポーネントから進化した仕組み

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

生徒

「先生、ReactのHooksってよく聞くんですけど、いったい何なんですか?」

先生

「Hooks(フック)は、Reactの機能をより簡単に使えるようにする仕組みなんです。特にuseStateuseEffectといったHooksがよく使われます。」

生徒

「昔からあるクラスコンポーネントと何が違うんですか?」

先生

「とても良いポイントですね。クラスコンポーネントでは複雑な書き方が必要でしたが、Hooksを使うことでシンプルに書けるようになったんです。今は関数コンポーネントとHooksを組み合わせるのが主流になっています。」

生徒

「なるほど!実際にどんなふうに使うのか見てみたいです。」

先生

「では、具体的にReact Hooksを使ったサンプルコードを見ていきましょう。」

1. React Hooksとは?

1. React Hooksとは?
1. React Hooksとは?

React Hooks(リアクトフック)とは、Reactのバージョン16.8から導入された新しい仕組みで、従来クラスコンポーネントでしかできなかった「状態管理」や「ライフサイクル処理」を、関数コンポーネントの中で簡単に書けるようにした機能です。

例えば、クラスコンポーネントではthis.statethis.setState()を使って状態を管理していました。しかし初心者にとってはthisの使い方やコンストラクタの記述が難しく、コードも長くなりがちでした。

Hooksを使えば、シンプルな関数だけで状態管理や副作用の処理ができるようになります。これにより、プログラムが短く分かりやすくなるのです。

2. クラスコンポーネントとHooksの違い

2. クラスコンポーネントとHooksの違い
2. クラスコンポーネントとHooksの違い

クラスコンポーネントとHooksの違いを、初心者でもイメージしやすいように「家の電気スイッチ」に例えてみましょう。

  • クラスコンポーネント:スイッチを入れるために複雑な回路(コンストラクタやライフサイクルメソッド)が必要。
  • Hooks:シンプルなスイッチを壁につけるだけで簡単にオンオフできる。

つまり、やりたいことは同じでも、Hooksを使うことでよりシンプルに書けるのです。

3. useStateで状態を管理する

3. useStateで状態を管理する
3. useStateで状態を管理する

useStateは、コンポーネントの中で「状態(state)」を持たせるためのHooksです。ボタンを押すと文字が変わるような処理を、わかりやすいサンプルで見てみましょう。


import React, { useState } from "react";

function App() {
  const [message, setMessage] = useState("こんにちは!");

  return (
    <div>
      <h1>{message}</h1>
      <button onClick={() => setMessage("ボタンがクリックされました!")}>
        クリックしてみよう
      </button>
    </div>
  );
}

export default App;
(画面に「こんにちは!」と表示され、ボタンを押すと「ボタンがクリックされました!」に変わります)

このように、useStateを使うと「現在の値」と「値を更新するための関数」を簡単に扱えます。クラスコンポーネントではthis.statethis.setStateを使っていましたが、Hooksなら一行で済みます。

4. useEffectで副作用を扱う

4. useEffectで副作用を扱う
4. useEffectで副作用を扱う

Reactでは、画面に表示する処理以外に「副作用(サイドエフェクト)」と呼ばれる処理を行うことがあります。例えばデータの取得やログの出力などが副作用です。クラスコンポーネントではcomponentDidMountcomponentDidUpdateを使っていましたが、HooksではuseEffectを使います。


import React, { useState, useEffect } from "react";

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

  useEffect(() => {
    document.title = `カウント: ${count}`;
  }, [count]);

  return (
    <div>
      <p>現在のカウント: {count}</p>
      <button onClick={() => setCount(count + 1)}>カウントアップ</button>
    </div>
  );
}

export default App;
(画面に「現在のカウント: 0」と表示され、ボタンを押すたびに数字が増え、ブラウザのタイトルも「カウント: ○」に変わります)

useEffectの第2引数に配列[count]を指定すると、その値が変わったときだけ処理が実行されます。もし空の配列[]を渡せば「最初の一回だけ実行」になります。

5. Hooksのメリット

5. Hooksのメリット
5. Hooksのメリット

Hooksを使うメリットはたくさんあります。

  • クラスを使わなくても状態やライフサイクルを扱える
  • コードが短く、読みやすい
  • 複数のHooksを組み合わせて柔軟に機能を追加できる
  • 関数として独自のHooksを作り、再利用しやすい

このように、HooksはReactをシンプルで扱いやすいものに進化させた仕組みといえます。

まとめ

まとめ
まとめ

React Hooksは、関数コンポーネントで状態管理や副作用処理をシンプルに扱える仕組みとして、今やReact開発の中心的な存在となっています。従来のクラスコンポーネントでは、コンストラクタの記述やthisの扱いに慣れる必要があり、初心者にとって敷居の高い部分も少なくありませんでした。しかし、Hooksの登場によって、状態管理はuseState、副作用処理はuseEffectといった明確で分かりやすい構文が用意され、Reactの学習曲線は大きく改善されました。 また、Hooksの魅力は基本Hooksだけにとどまらず、「独自のカスタムHooksを作る」ことでロジックを再利用できる点にもあります。複雑な仕様をコンポーネントから切り離して分割できるため、保守性や拡張性の向上にもつながります。大規模なアプリケーションでは、複数の画面で同じデータ取得ロジックを使い回すケースがよくありますが、カスタムHooksを作っておけば、そのロジックを一か所にまとめて管理できるため、変更に強い構成を実現できます。 さらに、HooksはReactのライフサイクルの理解を深めるきっかけにもなります。useEffectの依存配列の扱い方や、クリーンアップ処理の役割を知ることで、コンポーネントがどのタイミングで動いているのかがイメージしやすくなり、より予測しやすいプログラムが書けるようになります。ただ「動くコードを書くだけ」ではなく、Reactの仕組みそのものを理解できる点がHooksの最大の魅力とも言えるでしょう。 Hooksを使いこなせるようになると、コードの読みやすさや再利用性が大きく向上し、チーム開発でも意思疎通がしやすくなります。以下では、今回の内容を踏まえて、Hooksを活用した追加のサンプルとして「カスタムHooksの基本例」を紹介します。

追加サンプル:カスタムHookでカウンターロジックを共通化する

Hooksの理解を深めるために、カスタムHooksでカウント機能を共通化する例を見てみましょう。


// useCounter.js
import { useState } from "react";

export function useCounter(initialValue = 0) {
  const [count, setCount] = useState(initialValue);

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);
  const reset = () => setCount(initialValue);

  return { count, increment, decrement, reset };
}

// App.js
import React from "react";
import { useCounter } from "./useCounter";

function App() {
  const { count, increment, decrement, reset } = useCounter(0);

  return (
    <div>
      <h2>現在のカウント: {count}</h2>
      <button onClick={increment}>増やす</button>
      <button onClick={decrement}>減らす</button>
      <button onClick={reset}>リセット</button>
    </div>
  );
}

export default App;

このように、Hooksを関数として切り出すことで、UIとは独立したロジックを何度でも再利用でき、アプリ全体の構造がより美しく整理されます。小さなコンポーネントでも、大規模な画面でも、Hooksを意識した設計はReact開発の重要な基盤となります。

先生と生徒の振り返り会話

生徒

「Hooksって便利ですね!特にuseStateとuseEffectの仕組みが分かったら、一気にReactが使いやすくなりました。」

先生

「その通りですよ。Hooksを理解できると、Reactのほとんどの機能が扱えるようになります。しかも、カスタムHooksを作ればさらに開発の幅が広がります。」

生徒

「カスタムHooksって難しそうと思っていましたが、関数として処理をまとめるだけなら挑戦できそうです!」

先生

「その意識が大切ですね。Hooksは使えば使うほど理解が深まるので、これからもいろいろ試しながら身につけていきましょう。」

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

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

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

ReactのHooksとは何ですか?初心者でも理解できますか?

React Hooksとは、Reactで状態管理や副作用の処理を関数コンポーネント内で簡単に扱えるようにする仕組みで、初心者でも理解しやすくなっています。
カテゴリの一覧へ
新着記事
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を送る仕組みを初心者向けに紹介