カスタムフックを作成してReactアプリをもっと効率化する方法
カスタムフックを使用すると、Reactコンポーネントのロジックを再利用可能な形で抽出し、コードをよりシンプルでメンテナンスしやすくできます。この記事ではカスタムフックの作成方法と実用例を紹介します。
目次
カスタムフックとは何か
カスタムフックはReactのフックを組み合わせて作成される再利用可能な関数です。`use`で始まる名前を付けるのが一般的です。
カスタムフックの基本構造
カスタムフックは通常、関数として定義され、他のフックを内部で使用します。
import { useState, useEffect } from 'react';
function useCustomHook() {
const [state, setState] = useState(null);
useEffect(() => {
// サイドエフェクト処理
}, []);
return state;
}状態管理をカスタムフックで抽出
コンポーネントから状態管理ロジックを抽出して再利用します。
function useWindowSize() {
const [size, setSize] = useState(window.innerWidth);
useEffect(() => {
const handleResize = () => setSize(window.innerWidth);
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, []);
return size;
}APIリクエスト用のカスタムフック
データ取得ロジックをカスタムフックとして抽出します。
function useFetch(url) {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch(url)
.then(response => response.json())
.then(result => {
setData(result);
setLoading(false);
});
}, [url]);
return { data, loading };
}フォーム入力管理のカスタムフック
フォーム状態を管理するカスタムフックを作成します。
function useForm(initialValues) {
const [values, setValues] = useState(initialValues);
const handleChange = (e) => {
const { name, value } = e.target;
setValues({ ...values, [name]: value });
};
return { values, handleChange };
}カスタムフックの引数と戻り値
引数を活用してフックの柔軟性を高めます。
カスタムフックのテスト
JestやReact Testing Libraryを使用してカスタムフックをテストします。
import { renderHook, act } from '@testing-library/react-hooks';
import useCounter from './useCounter';
test('should increment counter', () => {
const { result } = renderHook(() => useCounter());
act(() => result.current.increment());
expect(result.current.count).toBe(1);
});エラーハンドリングを組み込む
APIリクエストなどで発生するエラーを処理する仕組みを追加します。
依存関係の管理
useEffectやuseMemoの依存配列を適切に管理して無駄な再レンダリングを防ぎます。
再利用性の向上
カスタムフックは複数のコンポーネント間で再利用されることを意識して設計します。
React DevToolsでカスタムフックをデバッグ
React DevToolsを使用してカスタムフックの状態を確認します。
パフォーマンスの最適化
useMemoやuseCallbackを組み合わせてパフォーマンスを向上させます。
よく使われるカスタムフックの例
一般的に使用されるカスタムフックのパターンをいくつか紹介します。
まとめ
カスタムフックを活用することで、Reactアプリケーションのコードがよりシンプルで再利用可能になり、メンテナンス性が向上します。
-
前の記事
JavaScriptのコンストラクタ関数とクラスの異なる使用シーン 2025.01.08
-
次の記事
Finder 新しいタブを開くショートカットキー 2025.01.09
コメントを書く