スポンサーリンク

React カスタムフック(Custom Hooks)とイベントハンドラ(Event Handlers)の整理

JavaScript
スポンサーリンク
本ページにはプロモーションが含まれています。

Reactにおけるカスタムフック(Custom Hooks)とイベントハンドラ(Event Handlers)は、それぞれ異なる目的と役割を持つ機能です。

以下にその違いを詳しく説明します。

スポンサーリンク

カスタムフック(Custom Hooks)

概要: カスタムフックは、Reactのフック(例えばuseStateuseEffect)を組み合わせて再利用可能なロジックを抽出し、複数のコンポーネントで共有できるようにしたものです。

名前は「use」で始める必要があります。

目的:

  • 複数のコンポーネントで共通する状態管理や副作用処理をまとめる。
  • コードの再利用性と可読性を向上させる。
  • ビジネスロジックをコンポーネントから分離することで、テストしやすくする。

例:

// useFetch.js
import { useState, useEffect } from 'react';

const useFetch = (url) => {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch(url)
      .then((response) => response.json())
      .then((json) => {
        setData(json);
        setLoading(false);
      });
  }, [url]);

  return { data, loading };
};

export default useFetch;
// MyComponent.js
import React from 'react';
import useFetch from './useFetch';

const MyComponent = () => {
  const { data, loading } = useFetch('https://api.example.com/data');

  if (loading) return <div>Loading...</div>;

  return <div>{JSON.stringify(data)}</div>;
};

export default MyComponent;

イベントハンドラ(Event Handlers)

概要: イベントハンドラは、ユーザーの操作(クリック、入力、送信など)に応じて実行される関数です。Reactでは、イベントハンドラをコンポーネント内で定義し、JSX内の要素にプロパティとして渡します。

目的:

  • ユーザーの操作に応じたインタラクションを実現する。
  • 状態の更新や他の関数の呼び出しなど、ユーザーアクションに基づく処理を行う。

例:

// ButtonComponent.js
import React, { useState } from 'react';

const ButtonComponent = () => {
  const [count, setCount] = useState(0);

  // イベントハンドラ
  const handleClick = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <button onClick={handleClick}>クリックしてカウント: {count}</button>
    </div>
  );
};

export default ButtonComponent;

主な違い

項目カスタムフック(Custom Hooks)イベントハンドラ(Event Handlers)
目的ロジックの再利用と抽象化ユーザーの操作に応じたインタラクションの処理
構造useで始まる関数。フックを内部で使用関数として定義し、JSX内のイベントプロパティに渡す
使用場所コンポーネントの中でフックとして呼び出すJSX内の要素に直接バインドする
再利用性高い。複数のコンポーネントで共有可能基本的に特定のコンポーネント内で使用
データフェッチ、フォームバリデーションなどの共通ロジックボタンのクリック、フォームの送信などのユーザー操作

まとめ

  • カスタムフックは、Reactのフックを利用して共通のロジックを抽出・再利用するための仕組みであり、主に状態管理や副作用の処理に関わります。
  • イベントハンドラは、ユーザーの操作に応じて特定の処理を実行するための関数であり、インタラクティブなユーザー体験を実現します。

両者はReactアプリケーションにおいて異なる役割を果たし、適切に使い分けることでコードの効率性と可読性を向上させることができます。

タイトルとURLをコピーしました