SEの部屋

React Hooksの一覧と簡単な説明

React Hooksについて

React HooksはReact 16.8以降で導入された、関数コンポーネントをより強力に、より効率的にするための機能です。
この一連のAPIは、ステート管理、ライフサイクルイベント、副作用(side-effects)といったReactの核心的な概念を、よりシンプルかつ効率的な形で扱うことを可能にします。この究極のガイドでは、useState、useEffect、useContextを始めとするReact Hooksの基本から応用まで、コード例付きで詳細に解説します。

useState

役割

useStateは関数コンポーネントでステートを管理するためのHookです。このHookを使用することで、関数コンポーネント内で状態を持つことができます。

使用例

import React, { useState } from 'react';

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

  return (
    <div>
      <p>{count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

引数

  • 初期値(任意)

この初期値はステートの初期値として設定されます。

メリット

  • クラスコンポーネントのthis.setStateよりもシンプル
  • 関数コンポーネント内で状態を持てる

デメリット

  • 関数コンポーネント専用


useEffect

役割

useEffectは副作用(データの取得、購読、手動でのDOM操作など)を関数コンポーネント内で行うためのHookです。

使用例

import React, { useEffect } from 'react';

function App() {
  useEffect(() => {
    document.title = 'Hello, React!';
  }, []);


  return <div>Hello, React!</div>;
}

引数

  • 実行する関数
  • 依存配列(任意)

依存配列は、配列内の値が変更された場合にのみ副作用が発生します。
メリット

  • componentDidMountcomponentDidUpdatecomponentWillUnmountを一つのAPIで扱える
  • 条件付きで副作用を発生させることが容易

デメリット

  • 依存配列の管理が難しい場合がある


useContext

役割

useContextはReactのContext APIを関数コンポーネントで使いやすくするHookです。

使用例

import React, { useContext } from 'react';
const ThemeContext = React.createContext('light');

function ThemedButton() {
  const theme = useContext(ThemeContext);
  return <button theme={theme}>I am styled by theme context!</button>;
}

引数

  • コンテキストオブジェクト

このコンテキストオブジェクトは、ReactのcreateContextで作成されます。

メリット

  • コンテキストを簡単に参照できる
  • Context.Consumerよりもシンプル

デメリット

  • コンテキストの変更によって再レンダリングが発生する可能性がある

その他のHooks

以下のHooksについても今後詳しく説明していきます。

  • useReducer: 複雑なステートロジックを管理
  • useCallback: メモ化されたコールバックを返す
  • useMemo: メモ化された値を返す
  • useRef: refオブジェクトを取得
  • useLayoutEffect: DOMの変更後に同期的に副作用を発生させる
  • useImperativeHandle: カスタムインスタンス値を設定

総評

メリット

  • 関数コンポーネントで豊富な機能が使えるようになる
  • コードの再利用とテストが容易
  • コンポーネントのロジックを独立した再利用可能な関数として抽出できる

デメリット

  • Reactのバージョン16.8以上が必要
  • Hooksのルール(順序、条件付き呼び出し)に注意が必要

この記事では各Hookについて個別に詳しく説明しました。初心者から中級者まで、この機能を理解して活用することで、より効率的なReact開発が可能になります。