サイトアイコン 上尾市のWEBプログラマーによるブログ

「React Hooks 入門」の感想・備忘録

点数

74

感想

Reactのフックだけに絞った内容であり、それぞれのフックの説明とサンプルが記載されていた。

useStateとuseEffectを使い、他のフックはパフォーマンスなどに問題がある場合のみ使う、というのが大まかな使い方となっていた。

useEffect

useRef

用途

  1. DOMの参照
    const inputElement = useRfe(null);
    として
    <input ref={inputElement} type="text>
    とすると
    inputElement.current.foucs()
    のようにアクセスすることができる。
  2. useStateを使いたいが再レンダリングはさせたくない場合。
    ※ useStateで実装できるのであればuseRefを使うべきではない

useStateと異なる点

  1. 値はcurrentプロパティを参照・更新する。
  2. 値を更新してもコンポーネントの再レンダリングは行われない。

React.memo

  1. React.memoはコンポーネントをメモ化するためのReactのAPIであり、再レンダリングをスキップすることができる。
  2. propsの値が前回と同じであれば、React.memoは再レンダリングせずにメモ化したコンポーネントを再利用する。

以下の場合にだけ使うべき。

  1. レンダーコストが高い。
  2. 頻繁に再レンダリングされるコンポーネント内の子コンポーネント。

useCallback

以下の場合はuseCallbackを使う意味がないので注意が必要である。

  1. React.memoでメモ化していないコンポーネントにuseCallbackでメモ化した関数を渡す。
  2. useCallbackでメモ化した関数を、それを生成したコンポーネント自身で利用する。

useMemo

useReducer

import {userReducer} from 'react';

const reducer = (state, action) => {
  switch (action.type) {
    case 'INCREMENT':
      return {count: state.count + 1};
  }
}
const App = () => {
  const [state, dispatch] = useReducer(reducer, {count: 0});
  return (
    <>
    <p>count: {state.count}</p>
    <button onClick={()=>dispatch({type: 'INCREMENT'})}>+</button>
    </>
  )
}

useContext

モバイルバージョンを終了