Next.jsのページコンポーネントでよくある実装パターンとして、以下のような流れがあります:
この実装で注意したいのが、不要なレンダリングです。単純な実装では以下のような問題が発生します:
解決方法 これらの課題を解決するカスタムフックを実装してみましょう
type PageData = {
title: string;
content: string;
lastUpdated: string;
};
type UsePageDataProps = {
initialData: PageData;
};
export const usePageData = ({ initialData }: UsePageDataProps) => {
const { data } = useGetPageDataQuery(undefined, {
selectFromResult: ({ data }) => ({
data: data ?? initialData,
}),
});
return { data };
};
これでレンダリング回数が2回になります