Closed MofuMofu2 closed 9 months ago
関数呼び出しの結果をキャッシュしておき、あとで再利用することをメモ化(memoization)と言います。
memoization(memo - i(/aɪ/) -zation)って一般的な言葉なのかと思って調べたが、プログラム高速化の手法と出てきたので専門用語っぽい。(Wikipedia)
この辺とか分かりやすそう。Oreillyとかだと本とCourseしかなくて発音がわからなかった。プログラムの解説はYoutubeでも英語の方が強いなと思う。日本語だと胡散臭い系が多いな…と思って…。
React.devには次のように書いてある。
memo lets you skip re-rendering a component when its props are unchanged.
props ar unchangedなのでpropsが変わらないときはコンポーネントの再レンダリングをスキップする。ということになる。
でも本のNoteには
メモ化はしなくてもよいならすべきではありません
と書いてある。メモ化でコードが複雑になるようだが、どうなるんだろうか。 オーバーエンジニアリングするな、という印象を受けた。
useMemoを使うと、依存しているステートに関するレンダリングはそのステートが更新される何かがキックされないと再レンダリングされないことがわかった。
しかし無闇に使うとバグりそうだし、かえってパフォーマンスが悪くなりそう。これは乱用しないほうがいいやつだなと思った。
メモ化ってそもそもどういうことや、というところから。
https://react.dev/reference/react/memo