【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();
useContextコンテキスト利用Contextの値を取得してコンポーネントで使用const theme = useContext(ThemeContext);
useReducer複雑な状態管理Redux風の状態管理が可能、状態遷移ロジックを分離const [state, dispatch] = useReducer(reducer, initialState);
useCallback関数メモ化再レンダリング時に同じ関数を再利用、子コンポーネントの無駄レンダリング防止const increment = useCallback(() => setCount(c => c + 1), []);
useMemo計算結果メモ化重い計算の結果を再利用、パフォーマンス最適化const double = useMemo(() => count * 2, [count]);
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 の各機能を具体的なサンプルコード付きで解説していきます。

コメント

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