Open cossack910 opened 11 months ago
親コンポーネントが再レンダリングされた時に子コンポーネントに再レンダリングをスキップできる。 不要なレンダリングがなくなるのでパフォーマンス最適化につながる。
export const ChildArea: React.FC<ChildAreaProps> = memo((props) => {
const {open} = props;
return(
<>
{
open ? (
<div>
<p>子コンポーネント</p>
</div>
) : null
}
</>
);
});
親コンポーネントで定義したアロー関数をpropsとして、子コンポーネントに渡すと親コンポーネントが再レンダリングされた時に新しい関数として再生成されるため、memo化されている子コンポーネント側でも再レンダリングされてしまう。 この防止策として本関数を使用する。
子コンポーネントにpropsとして渡しているアロー関数に使う
const onClickClose = useCallback(() => setOpen(false), [setOpen]);
変数のメモ化
const temp = useMemo(() => 1+3, []);
タイミング
親A->子B->孫C