【React.js/Next.js】React Hooks まとめ・完全ガイド

React.js / Next.js

React Hooks って、どんな機能があるのかな?

今回は、React.js を学ぶ上で押さえておきたい主要な機能のひとつである、React Hooks についてご紹介します。

React Hooks とは何か?

React Hooks とは、React 16.8 で導入された機能で、 これまで クラスコンポーネント でしか扱えなかった “状態管理” などのReactの機能 を、関数コンポーネント でも扱えるようにした仕組みです。

現在の React.js開発 では、React Hooks を前提とした 関数コンポーネント が主流です。

React Hooks が生まれた背景

それまでの React.js では、状態管理ライフサイクルの処理 を行うには クラスコンポーネントが必要でした。
しかし、クラスコンポーネント はコードが複雑になりやすく、同じロジックを複数のコンポーネントで共有することも簡単ではありませんでした。

そこで登場したのが React Hooks です。
React Hooks により、関数コンポーネント だけで効率的に再利用可能なコードを書くことができるようになりました。

React Hooks 一覧

React Hooks 主要な機能の一覧は下記になります。※Hook名 がリンクになっています。

Hook用途簡単な説明サンプルコード
useState状態管理コンポーネント内で状態を保持し、更新すると再レンダリングconst [count, setCount] = useState(0);
useEffect副作用処理API取得、DOM操作、タイマーなど副作用処理を実行useEffect(() => { fetchData(); }, []);
useRefDOM参照・値保持DOM参照や再レンダリング不要の値保持に使用const inputRef = useRef();
【優先】useAPI
useContext
(useのみ)Promise 利用
コンテキスト利用
(useのみ)Promiseの値を取得してコンポーネントで使用
Contextの値を取得してコンポーネントで使用
const data = use(fetchData());
const theme = useContext(ThemeContext);
useMemo
useCallback / memo と同じサイト
計算結果メモ化重い計算の結果を再利用、パフォーマンス最適化const double = useMemo(() => count * 2, [count]);
useCallback
useMemo / memo と同じサイト
関数メモ化再レンダリング時に同じ関数を再利用、子コンポーネントの無駄レンダリング防止const increment = useCallback(() => setCount(c => c + 1), []);
memoAPI
useMemo / useCallback と同じサイト
コンポーネントの描画結果メモ化props が前回と同じ場合、再レンダリング時に同じコンポーネントを再利用、子コンポーネントの再レンダリングの防止const MemoCountButton = memo(({ id, onIncrement, children }) => { console.log('MemoCountButton:', id); return <button onClick={onIncrement}>{children}</button>; });
useReducer複雑な状態管理Redux風の状態管理が可能、状態遷移ロジックを分離const [state, dispatch] = useReducer(reducer, initialState);
useImperativeHandleRefカスタマイズ親コンポーネントに公開するインスタンスメソッドを定義useImperativeHandle(ref, () => ({ focus: () => inputRef.current.focus() }));
useLayoutEffectレイアウト副作用DOM描画後すぐに同期で副作用を実行(useEffectより優先)useLayoutEffect(() => { console.log(divRef.current.offsetHeight); }, []);
useDebugValueデバッグ用カスタムHookのデバッグ情報を表示const deferred = useDeferredValue(value);

まとめ

React Hooks概要生まれた背景・機能一覧 について、いかがでしたでしょうか?

上記の React Hooks の各機能について、各リンク先よりご確認ください。

tachu × tachu

Laravel / React フルスタックエンジニア

Webエンジニア歴15年、フリーランス歴8年で、PHP / Laravel を中心に、
React.js / Vue.js を用いたフルスタックでのWeb開発をしています。

技術記事は Laravel / React / Web開発 を中心に書いています。

Webサービスの開発、既存システム改善、機能追加、技術相談、小規模な開発など、お気軽にご相談ください。

React.js / Next.js
シェアする

コメント

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