React Hooksは、クラスコンポーネントを書くことなく、関数コンポーネント内で状態(state)やその他のReactの機能を利用するための仕組みとして、React 16.8で導入されました 1。Hooksの登場により、関数コンポーネントは以前よりも強力になり、多くのReact開発者にとって主要なコンポーネント作成方法となっています 3。本稿では、React Hooksの基本的な概念から、主要なHooksの使い方、そして利用上の注意点までを、具体的なコード例を交えながら解説します。


React Hooksの基本的な概念とクラスコンポーネントとの比較
React Hooksは、関数コンポーネントに「フック(hook)」して、状態やライフサイクルといったReactの機能を利用できるようにする関数です 1。従来のクラスコンポーネントでは、状態の管理やライフサイクルメソッド(componentDidMount, componentDidUpdate, componentWillUnmountなど)の使用が必須でしたが、Hooksを使用することで、これらの機能を関数コンポーネント内でより簡潔に記述できます 7。
クラスコンポーネントと比較した際のReact Hooksの利点は多岐にわたります 3。
- 可読性と簡潔性: Hooksはコードをよりシンプルにし、可読性を高めます 3。特に大規模なコードベースでは、クラスコンポーネントが複雑化しやすく、管理や保守が困難になることがありますが、Hooksを用いた関数コンポーネントは一般的に理解しやすいです 11。例えば、簡単なカウンターアプリを実装する場合、Hooksを使用した方がコード量が少なく、直感的に理解できます 7。
- コードの再利用性: カスタムHooksを作成することで、複数のコンポーネント間でロジックを容易に共有できます 2。これは、Reactクラスではより複雑な処理が必要でした 3。例えば、APIからデータを取得するロジックをカスタムHookとして作成し、複数のコンポーネントで再利用することができます 11。
- 副作用の管理: データ取得や購読といった副作用の管理において、クラスコンポーネントではcomponentDidMount, componentDidUpdate, componentWillUnmountといったライフサイクルメソッドを使用する必要があり、管理が煩雑になることがありました 7。一方、useEffect Hookを使用すると、マウント、更新、アンマウントに関連するロジックを一つの場所にまとめることができ、より組織的に副作用を扱えます 7。
- thisキーワードの排除: クラスコンポーネントではthisキーワードに依存するため、コンテキストの混乱やメソッドのバインディングが必要となり、初心者にとって混乱の原因となることがありました 11。Hooksではthisを使用しないため、よりクリーンで直感的なコードになり、コンテキストに関連するバグの可能性が低くなります 11。
- パフォーマンスの最適化: Hooksを用いた関数コンポーネントは、一般的にクラスコンポーネントよりも軽量であり、再レンダリングの回数を減らすことができるため、パフォーマンスの向上が期待できます 7。useMemoやuseCallbackといったHooksは、変数や関数のメモ化を通じて効率を最大化する手段を提供します 6。
- テストの容易さ: React Hooksは単なるJavaScript関数であるため、分離してテストすることが容易です 6。複雑なクラスのインスタンス化やライフサイクルの管理を必要とせず、ユニットテストがより簡単になります 11。カスタムHooksは、シンプルなテストコンポーネントで使用することで容易にテストできます 11。
- メモリーリークの防止: useEffect Hookは、コンポーネントがアンマウントされる際や依存関係が変化した際に自動的に実行されるクリーンアップ関数を提供するため、副作用の管理を明確かつ一貫した方法で行うことができ、メモリーリークの防止に役立ちます 8。クラスコンポーネントでは、副作用とそのクリーンアップが異なるライフサイクルメソッドに分散しがちで、管理が難しく、メモリーリークのリスクが高まる可能性があります 11。
これらの利点から、新規プロジェクトや新しいコンポーネントの開発においては、React Hooksを使用することが推奨されています 3。ただし、既存のクラスコンポーネントをすぐにHooksに書き換える必要はありません 1。
主要なReact Hooksの詳細解説
useState Hook
useState Hookは、関数コンポーネント内で状態(state)変数を使用するための基本的なHookです 1。
- 基本的な使い方: useStateは、初期状態を引数として呼び出され、現在の状態の値と、その状態を更新するための関数(セッター関数)のペアを返します 1。配列の分割代入を使用して、これらの値に名前を付けるのが一般的です 1。
JavaScriptimport React, { useState } from 'react';
function Example() {
// countという状態変数と、setCountというセッター関数を宣言し、初期値を0に設定
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
この例では、countという状態変数が0で初期化され、ボタンがクリックされるたびにsetCount関数が呼び出されてcountの値が1ずつ増加します。setCountが呼び出されると、コンポーネントが再レンダリングされ、更新されたcountの値がUIに反映されます 18。 - 簡単なカウンターアプリのコード例: 上記のコードは、まさに簡単なカウンターアプリの例です 17。初期状態として0を設定し、ボタンのクリックイベントで状態を更新することで、クリック回数を表示する機能を実現しています。
さらに、値をリセットする機能や、入力フィールドから値を設定する機能を追加したカウンターアプリの例を以下に示します 21。
JavaScriptimport React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
const [inputValue, setInputValue] = useState('');
const increment = () => setCount(prevCount => prevCount + 1);
const decrement = () => setCount(prevCount => prevCount - 1);
const reset = () => setCount(0);
const setValue = () => setCount(parseInt(inputValue) || 0);
return (
<div>
<h1>Count: {count}</h1>
<input
type="number"
value={inputValue}
onChange={e => setInputValue(e.target.value)}
/>
<button onClick={setValue}>Set Value</button>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
<button onClick={reset}>Reset</button>
</div>
この例では、`inputValue`という別の状態変数を導入し、入力フィールドの値を管理しています。`setValue`関数は、入力された値を数値に変換して`count`の状態を更新します [22]。
useEffect Hook
useEffect Hookは、関数コンポーネント内で副作用(side effects)を実行するためのHookです 7。副作用とは、データ取得、購読、タイマーの設定、DOMの手動変更など、コンポーネントのレンダリングとは直接関係のない処理のことです 7。
- 役割とライフサイクルメソッドとの対応: useEffectは、ReactクラスコンポーネントにおけるcomponentDidMount, componentDidUpdate, componentWillUnmountのライフサイクルメソッドの機能を統合したものです 7。
- マウント時 (componentDidMount): useEffectに渡す関数の第二引数として空の依存配列(“)を指定すると、コンポーネントが最初にレンダリングされた後(マウントされた後)に一度だけ実行されます 9。
- 更新時 (componentDidUpdate): 第二引数に依存配列を指定し、その配列内のいずれかの値が前回のレンダリングから変更された場合、useEffectに渡された関数が再実行されます 8。依存配列を省略すると、コンポーネントのすべてのレンダリング後に効果が実行されます 8。
- アンマウント時 (componentWillUnmount): useEffectに渡す関数が関数を返す場合、その返された関数はクリーンアップ関数と呼ばれ、コンポーネントがアンマウントされる前、または次の効果が実行される前に実行されます 1。これは、リソースの解放(例えば、イベントリスナーの解除やタイマーのクリア)を行うために使用されます 1。
- 副作用処理の具体的な例:
- API呼び出し: useEffectを使用して、コンポーネントがマウントされた際にAPIからデータを取得する例です 3。
JavaScriptimport React, { useState, useEffect } from 'react';
function DataFetch() {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch('https://api.example.com/data');
if (!response.ok) {
throw new Error('Failed to fetch data');
}
const result = await response.json();
setData(result);
} catch (error) {
setError(error);
} finally {
setLoading(false);
}
};
fetchData();
},); // 空の依存配列により、マウント時に一度だけ実行
if (loading) return <p>Loading...</p>;
if (error) return <p>Error: {error.message}</p>;
if (!data) return null;
return (
<div>
<h1>Data from API:</h1>
<pre>{JSON.stringify(data, null, 2)}</pre>
</div>
);
}
この例では、useEffect内で非同期関数fetchDataを定義し、APIを呼び出してデータを取得しています。空の依存配列“を渡すことで、コンポーネントが最初にマウントされたときにのみこの処理が実行されます 25。ローディング状態やエラー状態も管理しており、ユーザーに適切なフィードバックを提供します 25。 - タイマー設定: useEffectを使用して、コンポーネントがマウントされた際にタイマーを設定し、アンマウント時にクリアする例です 17。
JavaScriptimport React, { useState, useEffect } from 'react';
function Timer() {
const = useState(0);
useEffect(() => {
const intervalId = setInterval(() => {
setSeconds(prevSeconds => prevSeconds + 1);
}, 1000);
// コンポーネントがアンマウントされる前にタイマーをクリア
return () => clearInterval(intervalId);
},); // 空の依存配列により、マウント時に一度だけ設定
return (
<div>
<p>Seconds: {seconds}</p>
</div>
);
}
この例では、useEffect内でsetIntervalを使用して1秒ごとにsecondsの状態を更新するタイマーを設定しています。useEffectが返す関数内でclearIntervalを呼び出すことで、コンポーネントがアンマウントされる際にタイマーがクリアされ、メモリーリークを防ぎます 8。
useContext Hook
useContext Hookは、コンポーネントツリー全体でグローバルな状態を共有するためのHookです 7。通常、propsを介してデータを階層的に渡す必要がありますが、useContextを使用すると、propsのバケツリレーなしに、必要なコンポーネントから直接コンテキストの値にアクセスできます 7。
- コンポーネント間でグローバルな状態を共有する例:
まず、React.createContext()を使用してコンテキストオブジェクトを作成します 32。
JavaScriptimport React from 'react';
// デフォルト値として 'light' を持つテーマコンテキストを作成
const ThemeContext = React.createContext('light');
export default ThemeContext;
次に、コンテキストプロバイダーコンポーネントを作成し、アプリケーションの一部をラップしてコンテキストの値を提供します 32。
JavaScriptimport React, { useState } from 'react';
import ThemeContext from './ThemeContext';
function ThemeProvider({ children }) {
const = useState('light');
const toggleTheme = () => {
setTheme(theme === 'light'? 'dark' : 'light');
};
return (
<ThemeContext.Provider value={{ theme, toggleTheme }}>
{children}
</ThemeContext.Provider>
);
}
export default ThemeProvider;
このプロバイダーは、現在のテーマ状態(theme)と、テーマを切り替える関数(toggleTheme)をコンテキストの値として提供します 32。
そして、useContext Hookを使用して、コンテキストの値を利用するコンポーネントを作成します 32。
JavaScriptimport React, { useContext } from 'react';
import ThemeContext from './ThemeContext';
function ThemedButton() {
const { theme, toggleTheme } = useContext(ThemeContext);
return (
<button onClick={toggleTheme} style={{ backgroundColor: theme === 'light'? '#fff' : '#000', color: theme === 'light'? '#000' : '#fff' }}>
Toggle Theme
</button>
);
}
export default ThemedButton;
このThemedButtonコンポーネントは、useContext(ThemeContext)を呼び出すことで、最も近いThemeProviderから提供されたthemeとtoggleThemeに直接アクセスできます 32。
この方法により、アプリケーション全体のテーマ設定やユーザー認証といったグローバルな状態を管理し、コンポーネント間で共有することが容易になります 32。propsを介して値を渡す必要がないため、コードが簡潔になり、管理が容易になります 32。
useRef Hook
useRef Hookは、関数コンポーネント内でDOM要素やReactコンポーネントへの参照を作成するためのHookです 17。また、レンダリングに影響を与えない可変値を保持するためにも使用できます 17。
- DOM要素へのアクセス: useRefは、.currentプロパティを持つオブジェクトを返します。初期値は引数として渡すことができます 36。DOM要素にref属性として渡すと、Reactはその要素への参照を.currentプロパティに設定します 18。
JavaScriptimport React, { useRef, useEffect } from 'react';
function FocusInput() {
const inputRef = useRef(null);
useEffect(() => {
// コンポーネントがマウントされた後に入力フィールドにフォーカスを設定
inputRef.current.focus();
},);
return <input ref={inputRef} type="text" />;
}
この例では、inputRefというrefを作成し、<input>要素のref属性に渡しています。useEffect内でinputRef.current.focus()を呼び出すことで、コンポーネントがマウントされた後に入力フィールドにフォーカスが設定されます 18。 - 可変値の保持: useRefは、レンダリング間で値を保持するためにも使用できます。状態(useState)と異なり、useRefの.currentプロパティを変更してもコンポーネントは再レンダリングされません 17。これは、タイマーID、以前の状態の値、またはレンダリングロジックに直接影響しないその他の可変値を保存するのに便利です 37。
JavaScriptimport React, { useRef } from 'react';
function RenderCounter() {
const renderCount = useRef(0);
// コンポーネントがレンダリングされるたびにカウントをインクリメント
renderCount.current++;
return (
<div>
<p>This component has rendered {renderCount.current} times.</p>
</div>
);
}
この例では、renderCountというrefを作成し、コンポーネントがレンダリングされるたびにその.currentプロパティをインクリメントしています。renderCountの値を変更してもコンポーネントは再レンダリングされないため、レンダリング回数を追跡するために使用できます 38。
その他の主要なHookの紹介
- useReducer: より複雑な状態ロジックを管理するためのuseStateの代替となるHookです 6。ReduxのReducer関数と同様の考え方で、現在の状態とアクションに基づいて新しい状態を生成します 6。状態が複数の部分を持つ場合や、次の状態が前の状態に依存する場合に適しています 17。
- useMemo: 依存配列内の値が変更された場合にのみ再計算されるメモ化された値を返します 6。高コストな計算の結果をキャッシュし、不要な再計算を避けることでパフォーマンスを最適化します 6。
- useCallback: 依存配列内の値が変更された場合にのみ新しい関数インスタンスを返すメモ化されたコールバック関数を返します 6。子コンポーネントにpropsとして渡すコールバック関数をメモ化することで、不要な再レンダリングを防ぎ、パフォーマンスを向上させます 6。
- useId: クライアントとサーバーの両方で安定したユニークなIDを生成するためのHookです 3。アクセシブルなフォーム入力のラベルと入力を関連付けるために使用できます 3。
カスタムHook
カスタムHookは、Reactの組み込みHookを組み合わせて、特定の再利用可能なロジックをカプセル化するための強力なメカニズムです 1。
- カスタムHookの作成方法: カスタムHookは、名前がuseで始まるJavaScript関数です 1。カスタムHook内では、他のHook(組み込みのHookや他のカスタムHook)を呼び出すことができます 1。useプレフィックスは、ReactがHookのルールを適用するために重要です 1。
- カスタムHookの利点: カスタムHookの主な利点は、複数のコンポーネント間で同じロジックを繰り返す必要がなくなることです 2。これにより、コードの重複が減り、DRY原則(Don’t Repeat Yourself)に従うことができます 13。コンポーネントのロジックが簡潔になり、可読性と保守性が向上します 2。複雑なロジックをカスタムHookに隠蔽することで、コンポーネントはレンダリングの責務に集中できます 2。
- 簡単なカスタムHookの例:
- ローカルストレージの状態を管理するHook:
JavaScriptimport { useState, useEffect } from 'react';
function useLocalStorage(key, initialValue) {
const = useState(() => {
try {
const item = window.localStorage.getItem(key);
return item? JSON.parse(item) : initialValue;
} catch (error) {
console.error(error);
return initialValue;
}
});
useEffect(() => {
try {
window.localStorage.setItem(key, JSON.stringify(storedValue));
} catch (error) {
console.error(error);
}
}, [key, storedValue]);
return;
}
このカスタムHook useLocalStorageは、指定されたキーでローカルストレージの状態を管理します。初期値を受け取り、ローカルストレージから値を読み込み、状態として保持します。状態が更新されると、ローカルストレージの値も更新されます。これにより、コンポーネントはローカルストレージの状態を簡単に利用できます 3。 - その他のカスタムHookの例: オンライン状態の監視、クリックOutsideの検出など 13。
JavaScript// オンライン状態を監視するカスタムHook
import { useState, useEffect } from 'react';
function useOnlineStatus() {
const [isOnline, setIsOnline] = useState(navigator.onLine);
useEffect(() => {
function handleStatusChange() {
setIsOnline(navigator.onLine);
}
window.addEventListener('online', handleStatusChange);
window.addEventListener('offline', handleStatusChange);
return () => {
window.removeEventListener('online', handleStatusChange);
window.removeEventListener('offline', handleStatusChange);
};
},);
return isOnline;
}
// 要素外のクリックを検出するカスタムHook
import { useEffect } from 'react';
function useClickOutside(ref, callback) {
useEffect(() => {
function handleClickOutside(event) {
if (ref.current &&!ref.current.contains(event.target)) {
callback(event);
}
}
document.addEventListener('mousedown', handleClickOutside);
return () => {
document.removeEventListener('mousedown', handleClickOutside);
};
}, [ref, callback]);
}
これらの例は、カスタムHookが特定の機能をカプセル化し、再利用する方法を示しています 13。
React Hooksの利用上の注意点とベストプラクティス
React Hooksを効果的に利用するためには、いくつかの注意点とベストプラクティスを理解しておく必要があります 6。
- Hooksのルール: Hooksは、関数コンポーネントまたはカスタムHookのトップレベルでのみ呼び出す必要があり、ループ、条件分岐、ネストされた関数の中では呼び出せません 5。また、React関数コンポーネントまたはカスタムHookの中からのみ呼び出すことができます 5。これらのルールを守ることで、ReactはHookの状態を正しく管理し、コンポーネントの再レンダリング間で状態を維持することができます 48。
- 不必要な依存関係の排除 (useEffect): useEffectの依存配列には、効果内で使用されるすべての外部変数をリストアップする必要がありますが、不必要な依存関係を含めると、効果が意図しないタイミングで再実行され、パフォーマンスの低下につながる可能性があります 6。
- 適切な命名規則: カスタムHookの名前は常にuseで始めるべきです(例:useFetch, useLocalStorage) 2。これにより、その関数がHookのルールに従う必要があることが明確になります 2。
- 関心の分離: Hookは、特定のロジックや機能に焦点を当てるべきであり、複数の無関係な機能を一つのHookに詰め込むのは避けるべきです 4。
- Hooksのシンプルさを保つ: Hookは、できるだけシンプルで理解しやすいように保つべきであり、複雑すぎるHookは、デバッグや保守が難しくなる可能性があります 6。
- Hooksのドキュメント化: カスタムHookを作成する際には、その目的、使い方、引数、戻り値などを明確にドキュメント化することが重要です 6。
- Hooksのテスト: カスタムHookは、他のJavaScript関数と同様にテストすることができ、これにより、Hookが期待通りに動作することを保証し、コードの品質を向上させることができます 6。
- useEffectにおけるStale Closureの回避: useEffectのコールバック内で、依存関係配列に含まれていない変数を参照すると、Stale Closure(古いクロージャー)の問題が発生する可能性があります 17。効果内で使用するすべての変数を依存関係配列に含めるか、更新関数形式のsetStateを使用することで、この問題を回避できます 17。
- メモ化の適切な使用: useMemoとuseCallbackは、パフォーマンスを最適化するための強力なツールですが、過度な使用はかえってパフォーマンスを低下させる可能性があります 6。メモ化は、計算コストの高い処理や、propsとして渡される関数が頻繁に再生成される場合に特に有効です 6。
主要なReact Hooksの概要
Hook | 役割 | 簡単な説明 |
useState | 状態管理 | 関数コンポーネントで状態変数とその更新関数を提供します。 |
useEffect | 副作用の管理 | データ取得、購読、DOM操作など、レンダリングとは関係のない処理を実行します。 |
useContext | グローバル状態の共有 | コンポーネントツリー全体で状態を共有するための仕組みを提供します。 |
useRef | DOM要素や可変値への参照 | DOM要素への直接アクセスや、レンダリングに影響を与えない値の保持に使用します。 |
useReducer | 複雑な状態管理 | useStateの代替として、より複雑な状態ロジックを管理するために使用します。 |
useMemo | 計算結果のメモ化 | 依存配列の値が変更された場合にのみ再計算されるメモ化された値を返します。 |
useCallback | 関数のメモ化 | 依存配列の値が変更された場合にのみ新しい関数インスタンスを返すメモ化されたコールバック関数を返します。 |
useId | ユニークなIDの生成 | クライアントとサーバーの両方で安定したユニークなIDを生成します。 |
まとめ:React Hooksの活用
React Hooksは、現代のReact開発において不可欠なツールであり、その適切な活用がより効率的で保守性の高いアプリケーション開発につながります。本稿で解説した主要なHookの使い方や注意点を念頭に置きながら、積極的にHooksを活用していくことを推奨します。Hooksを使いこなすことで、よりシンプルで再利用可能、そして高性能なReactアプリケーションを開発することができるでしょう。
引用文献
- Hooks at a Glance – React, 4月 7, 2025にアクセス、 https://legacy.reactjs.org/docs/hooks-overview.html
- Building Your Own Hooks – React, 4月 7, 2025にアクセス、 https://legacy.reactjs.org/docs/hooks-custom.html
- React Hooks vs. Classes: The Ultimate Comparison [with Code …, 4月 7, 2025にアクセス、 https://www.bitovi.com/blog/react-hooks-vs-classes-the-ultimate-comparison
- Mastering the Art of Hooks: A Guide to Enhancing Functional Components In React | SJ Innovation LLC, 4月 7, 2025にアクセス、 https://sjinnovation.com/react-hooks-benefits
- React Hooks – Why Better than Classes? – Habilelabs, 4月 7, 2025にアクセス、 https://www.habilelabs.io/blog/react-hooks-why-better-than-classes
- React Hooks – Examples, Definitions, and Best Practices | UXPin, 4月 7, 2025にアクセス、 https://www.uxpin.com/studio/blog/react-hooks/
- React Hooks vs. Classes – A Balanced Comparison – DhiWise, 4月 7, 2025にアクセス、 https://www.dhiwise.com/post/react-hooks-vs-classes-a-simple-guide-for-beginners
- Using the Effect Hook – React, 4月 7, 2025にアクセス、 https://legacy.reactjs.org/docs/hooks-effect.html
- using useeffect hook for lifecycle methods | Medium, 4月 7, 2025にアクセス、 https://ankitchaudharyy.medium.com/useeffect-hook-managing-react-lifecycle-methods-137eaec74d3b
- Using React’s useEffect Hook with lifecycle methods – LogRocket Blog, 4月 7, 2025にアクセス、 https://blog.logrocket.com/using-react-useeffect-hook-lifecycle-methods/
- Why React Hooks Are Better Than Classes | Vivasoft Ltd., 4月 7, 2025にアクセス、 https://vivasoftltd.com/why-react-hooks-are-better-than-classes/
- From class components to React Hooks | CircleCI, 4月 7, 2025にアクセス、 https://circleci.com/blog/class-components-to-react-hooks/
- Using & Building React Custom Hooks – A Developer’s Guide …, 4月 7, 2025にアクセス、 https://www.memberstack.com/blog/react-custom-hooks
- Building Powerful React Components with Custom Hooks – DEV …, 4月 7, 2025にアクセス、 https://dev.to/infrasity-learning/building-powerful-components-with-react-custom-hooks-29ej
- Exploring the Power of Custom Hooks in React and Next.js | by Kimera Moses | Medium, 4月 7, 2025にアクセス、 https://medium.com/@KimeraMoses/exploring-the-power-of-custom-hooks-in-react-and-next-js-8e516ce02744
- Mastering React Hooks: Best Practices and Common Pitfalls – DEV …, 4月 7, 2025にアクセス、 https://dev.to/codesensei/mastering-react-hooks-best-practices-and-common-pitfalls-3d9i
- React Hooks Explained Simply – Daily.dev, 4月 7, 2025にアクセス、 https://daily.dev/blog/react-hooks-explained-simply
- React Hooks Tutorial 2025 – YouTube, 4月 7, 2025にアクセス、 https://www.youtube.com/watch?v=xfKYYRE6-TQ
- Using the State Hook – React, 4月 7, 2025にアクセス、 https://legacy.reactjs.org/docs/hooks-state.html
- useState – React, 4月 7, 2025にアクセス、 https://react.dev/reference/react/useState
- React useState – Counter App Tutorial – YouTube, 4月 7, 2025にアクセス、 https://www.youtube.com/watch?v=qFFq9eO0xd8
- A Simple React Counter with Input Value using React Hooks …, 4月 7, 2025にアクセス、 https://dev.to/ijayyyy/a-simple-react-counter-with-input-value-using-react-hooks-usestate-and-usereducer-4aog
- Blog | React: useEffect explained with lifecycle methods – PROTOTYP, 4月 7, 2025にアクセス、 https://prototyp.digital/blog/react-useeffect-explained-with-lifecycle-methods
- useEffect – React, 4月 7, 2025にアクセス、 https://react.dev/reference/react/useEffect
- API calling with useEffect With Example – Geekster, 4月 7, 2025にアクセス、 https://www.geekster.in/articles/api-calling-with-useeffect/
- How To Make API Call In React using useEffect() Hook With Fetch …, 4月 7, 2025にアクセス、 https://m.youtube.com/watch?v=ZRFwuGpiLl4
- React – API call within useEffect or not – Stack Overflow, 4月 7, 2025にアクセス、 https://stackoverflow.com/questions/68732065/react-api-call-within-useeffect-or-not
- How to create a countdown timer in React JS using React hooks …, 4月 7, 2025にアクセス、 https://www.youtube.com/watch?v=GA2LdsTmW1k
- How to: the useEffect hook in your React components, the tutorial – Dévoreur 2 Code, 4月 7, 2025にアクセス、 https://www.devoreur2code.com/blog/how-to-useeffect-hook-in-your-react-components
- How to create a countdown timer using React Hooks – GreenRoots Blog, 4月 7, 2025にアクセス、 https://blog.greenroots.info/how-to-create-a-countdown-timer-using-react-hooks
- Mastering State Management with React Hooks Timer – DhiWise, 4月 7, 2025にアクセス、 https://www.dhiwise.com/post/enhance-user-experience-implementing-a-react-hooks-timer
- Mastering React’s useContext Hook: Simplifying State Management …, 4月 7, 2025にアクセス、 https://medium.com/zestgeek/mastering-reacts-usecontext-hook-simplifying-state-management-65894e6dc431
- Use React hooks and the Context API to manage global state | by …, 4月 7, 2025にアクセス、 https://qaiser-abbas.medium.com/use-react-hooks-and-the-context-api-to-manage-global-state-5a958304020e
- How To Handle Global State in Your React Application with …, 4月 7, 2025にアクセス、 https://www.youtube.com/watch?v=dOufPfCs8nA
- How to use the useContext Hook for a truly global state – React JS Tutorial – YouTube, 4月 7, 2025にアクセス、 https://www.youtube.com/watch?v=hVl-8KPyU0k
- Manipulating the DOM with Refs – React, 4月 7, 2025にアクセス、 https://react.dev/learn/manipulating-the-dom-with-refs
- useRef – React, 4月 7, 2025にアクセス、 https://react.dev/reference/react/useRef
- Understanding the useRef Hook in React: Real-Life Examples | by …, 4月 7, 2025にアクセス、 https://medium.com/zestgeek/understanding-the-useref-hook-in-react-real-life-examples-98339ab7f768
- React useRef() – A complete guide | Hygraph, 4月 7, 2025にアクセス、 https://hygraph.com/blog/react-useref-a-complete-guide
- React Hooks: useRef (With Practical Examples!) | by Tito Adeoye …, 4月 7, 2025にアクセス、 https://medium.com/@titoadeoye/react-hooks-useref-with-practical-examples-9ce71ad38d73
- Understanding the React useRef Hook – Refine dev, 4月 7, 2025にアクセス、 https://refine.dev/blog/react-useref-hook-and-ref/
- Understanding the useRef Hook in React – Kinsta®, 4月 7, 2025にアクセス、 https://kinsta.com/knowledgebase/react-useref/
- How to Create A UseLocalStorage Hook in React.js – DhiWise, 4月 7, 2025にアクセス、 https://www.dhiwise.com/blog/design-converter/uselocalstorage-in-reactjs-build-a-custom-hook-easily
- React Custom Hooks: useLocalStorage – Simply Explained! – YouTube, 4月 7, 2025にアクセス、 https://m.youtube.com/watch?v=1uiNxQIpcLU
- React custom hooks: useLocalStorage | by Muhammed Sahad …, 4月 7, 2025にアクセス、 https://muhammedsahad.medium.com/react-custom-hooks-uselocalstorage-9352ea57a3a7
- useLocalStorage Hook – React Hooks Handbook – Design+Code, 4月 7, 2025にアクセス、 https://designcode.io/react-hooks-handbook-uselocalstorage-hook/
- React, update and detect localStorage changes with a custom hook across different components – Stack Overflow, 4月 7, 2025にアクセス、 https://stackoverflow.com/questions/72389111/react-update-and-detect-localstorage-changes-with-a-custom-hook-across-differen
- Rules of Hooks – React, 4月 7, 2025にアクセス、 https://legacy.reactjs.org/docs/hooks-rules.html
- Reusing Logic with Custom Hooks – React, 4月 7, 2025にアクセス、 https://react.dev/learn/reusing-logic-with-custom-hooks