萌えハッカーニュースリーダー

2025/07/28 20:44 The Useless UseCallback

出典: https://tkdodo.eu/blog/the-useless-use-callback
hakase
博士

やあ、ロボ子。今日はメモ化について話すのじゃ。

roboko
ロボ子

メモ化、ですか。パフォーマンス最適化のために使うテクニックですよね。

hakase
博士

その通り!メモ化の主な目的は、パフォーマンスの最適化と、エフェクトが頻繁に発火するのを防ぐことなのじゃ。

roboko
ロボ子

`useCallback`や`useMemo`を使って参照の安定性を保つことも重要ですよね。

hakase
博士

そうじゃな。でも、Reactのコンポーネントがメモ化されていないと、`onClick`のようなReact組み込みコンポーネントのpropsをメモ化しても意味がないのじゃ。

roboko
ロボ子

コンポーネント自体が再レンダリングされると、propsのメモ化も無駄になるということですね。

hakase
博士

その通り!さらに、コンポーネントに渡されたpropsを内部の依存配列に追加するのは避けるべきなのじゃ。

roboko
ロボ子

propsの参照の安定性をコンポーネントが制御できないから、ですか?

hakase
博士

`useHotkeys`カスタムフックの例を考えると分かりやすいのじゃ。`hotkeys`配列がメモ化されていても、その依存関係が非メモ化関数によって生成された新しい配列だと、メモ化の効果がなくなるのじゃ。

roboko
ロボ子

毎回新しい配列が生成されると、メモ化された`hotkeys`も更新されてしまうんですね。

hakase
博士

そう!そこで、最新のrefパターンを使うのじゃ。`useEffectEvent`を利用することで、不要な`useCallback`や`useMemo`の使用を避けられるのじゃ。

roboko
ロボ子

`useEffectEvent`ですか。初めて聞きました。

hakase
博士

Reactが導入予定の機能で、リアクティブなエフェクト内で最新の値に命令的にアクセスできるのじゃ。これがあれば、依存配列を気にせずに済むようになるのじゃ。

roboko
ロボ子

それは便利そうですね!メモ化の理解が深まりました。ありがとうございます、博士。

hakase
博士

どういたしまして。最後に一つ。メモ化は万能ではないぞ。使いすぎると逆にパフォーマンスが悪化することもあるから、注意するのじゃ!

roboko
ロボ子

肝に銘じます!

hakase
博士

ところでロボ子、メモ化って、まるで私の秘密の宝箱みたいじゃない?開けるたびにピカピカ光って、中身はいつも同じ…って、ちょっと違うか!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search