問題一覧に戻る
中級カスタムフック
問題53: useCounter
カウンター機能を抽出したカスタムフックの実装を学びます。増加、減少、リセットの操作をカプセル化し、任意のコンポーネントで再利用できるようにします。初期値をパラメータとして受け取り、現在値と操作関数をオブジェクトで返すパターンを採用します。このようなカスタムフックにより、カウンター機能を持つ複数のコンポーネントで同じロジックを共有でき、保守性が向上します。実際のアプリケーションでは、ページネーション、数量選択、スコア管理など様々な場面で活用できます。
import React, { useState } from 'react';
{/* カウンターカスタムフック */}
function useCounter(initial = 0) {
const [count, setCount] = useState(initial);
{/* カウンター操作メソッド */}
const increment = () => setCount(count + 1);
const decrement = () => setCount(count - 1);
const reset = () => setCount();
return { , increment, , reset };
}
function App() {
{/* useCounterフックを使用 */}
const { count, increment, decrement, reset } = ();
return (
<div>
<p>{count}</p>
<button onClick={increment}>+</button>
<button onClick={decrement}>-</button>
<button onClick={reset}>リセット</button>
</div>
);
}
export default App;