chot Inc. で Web エンジニアをしているすてぃんです。今回は社内で useMemo の使い時がわからんという話題が挙がったので、ケースによる使い時と解説をまとめました。コードレビュー時などの参考になれば幸いです。 結論 値の計算量が大きい場合: 使う 値の計算量が小さい場合 値が primitive の場合: 使わない 値がオブジェクトや配列の場合 値をスコープ外に持ち出す場合: 使う 値をスコープ外に持ち出さない場合: 使わなくてもいい 値が関数の場合: useCallback を使う 色々条件あってよくわからんという場合: 使わなくていいです 前提知識 useMemo とは useMemo は次のような型で定義される React Hooks の 1 つです。 第 1 引数で渡す関数 factory の戻り値と useMemo 自体の戻り値の型が一致しています。それもそのはず
![【React】useMemo の使い時をまとめる](https://cdn-ak-scissors.b.st-hatena.com/image/square/7ed90fbc192d4f1f9bb7c53760b19b8eec9bb929/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--g0JQeJE4--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E3%252580%252590React%2525E3%252580%252591useMemo%252520%2525E3%252581%2525AE%2525E4%2525BD%2525BF%2525E3%252581%252584%2525E6%252599%252582%2525E3%252582%252592%2525E3%252581%2525BE%2525E3%252581%2525A8%2525E3%252582%252581%2525E3%252582%25258B%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_34%3A%2525E3%252581%252599%2525E3%252581%2525A6%2525E3%252581%252583%2525E3%252582%252593%252Cx_220%252Cy_108%2Fbo_3px_solid_rgb%3Ad6e3ed%252Cg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzAzODVjOWFlYzkuanBlZw%3D%3D%252Cr_20%252Cw_90%252Cx_92%252Cy_102%2Fco_rgb%3A6e7b85%252Cg_south_west%252Cl_text%3Anotosansjp-medium.otf_30%3Achot%252520Inc.%252520tech%252520blog%252Cx_220%252Cy_160%2Fbo_4px_solid_white%252Cg_south_west%252Ch_50%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzIzMTEyZmJmM2MuanBlZw%3D%3D%252Cr_max%252Cw_50%252Cx_139%252Cy_84%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)