wiki.nitaking.dev

SWR

SWRを使ったデータフェッチングとレイアウトシフト対策

GitHubView on GitHub

参考資料:

SWRConfig.value.fallback にgetServerSidePropsの値を使うことで、レイアウトシフトを防ぐことができる。

積極的に利用していきたい。

import { SWRConfig } from "swr";

export type HogeContainerComponentProps = {
  fallback: {
    "/api/hoge": Hoge;
  };
};

function HogeContainerComponent({
  fallback,
}: HogeContainerComponentProps): JSX.Element {
  return (
    <SWRConfig value={{ fallback }}>
      <HogePresentationalComponent />
    </SWRConfig>
  );
}

// getStaticProps でも同様
export const getServerSideProps: GetServerSideProps<
  HogeContainerComponentProps
> = async () => {
  const { data: hoge } = await axios.get("http://hogehoge/api/hoge");

  return {
    props: {
      fallback: {
        "/api/hoge": hoge,
      },
    },
  };
};

return HogeContainerComponent;

Last updated on