【Next.js】SSRとは…?

目次

はじめに

この記事ではNext.jsを使用する上で避けられない以下のレンダリング(=データフェッチ)について解説してきます。

  • CSR
  • SSR
  • SSG
  • ISR

今回のテーマはSSRです。

SSR以外も記事にしていますので興味がある方は是非ご覧ください!

CSRについては以下をご覧ください。

SSGについては以下をご覧ください。

ISRについては以下をご覧ください。

SSR

SSRはServer Side Renderingの略で、サーバ側でデータフェッチを行い、レンダリングしたHTMLをクライアントに返すものになります。

ブラウザでとあるURLにアクセスするとサーバにリクエストを行い、サーバ上でデータを取得してレンダリングしたHTMLが返却されます。

イメージ図としては以下のような図になります。

SSRのイメージ図

SEOにも対応可能になります。

SSRでは、サーバ上でデータ取得、レンダリングをすべてクライアントで実施しますが、やはりサーバ上でのデータ取得に時間がかかってしまう場合があります。

このSSRのデメリットを解消したものがSSGになります。

SSRはどんな時に使う?

以下の観点に当てはまる場合はSSRを使用すると良いでしょう。

  • リクエスト時にデータをフェッチする必要があるページをレンダリングする必要がある場合
  • ページに動的コンテンツが含まれて頻繁に更新される場合
  • SEO対策やOGP対応のためにPre-renderingが必要な場合

SSRの実装

SSRの実装例を紹介します。

よくやる実装方法としてはgetServerSidePropsを使用してデータフェッチを行います。

import { useState } from 'react'

function Address({ data }) {
  const [data, setData] = useState(null)
  const [isLoading, setLoading] = useState(false)

  if (isLoading) return <p>Loading...</p>
  if (!data) return <p>No profile data</p>

  return (
    <div>
      <h1>{data.results[0].address1}</h1>
      <p>{data.results[0].address2}</p>
      <p>{data.results[0].address3}</p>
    </div>
  )
}

export async function getServerSideProps() {
  const res = await fetch('https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060')
  const data = await res.json()

  return { props: { data } }
}

export default Address;

参考

まとめ

本記事ではNext.jsにおけるデータフェッチのSSRについて解説しました。

是非、いいねやコメントをお願いします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次