【Next.js】CSRとは…?

目次

はじめに

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

  • CSR
  • SSR
  • SSG
  • ISR

今回のテーマはCSRです。

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

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

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

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

CSR

CSRはClient Side Renderingの略で、クライアント側でデータフェッチを行い、レンダリングをするものになります。

ブラウザでとあるURLにアクセスすると空のHTMLとJSが返却されます。

クライアントに返却されたJSが実行されて、データを取得し、HTMLを構築する流れとなります。

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

CSRのイメージ図

CSRでは、JSの読み込みからデータ取得、レンダリングをすべてクライアントで実施するので、アプリケーションのパフォーマンスとページの読み込み速度に影響を与える可能性があります。

また、初回アクセス時にサーバから返されるHTMLがほぼ空のファイルなのでクローラーがコンテンツを認識できない場合があるためSEOが不利になることがあります。

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

CSRはどんな時に使う?

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

  • ページがSEOを必要としない場合
  • データを事前にレンダリングする必要がない場合
  • ぺージのコンテンツを頻繁に更新する必要がある場合

CSRの実装

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

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

useEffectがわからないという方は以下をご覧ください。

import { useEffect, useState } from 'react'

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

  useEffect(() => {
    setLoading(true)
    fetch('https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060')
      .then((res) => res.json())
      .then((data) => {
        setData(data)
        console.log(data)
        setLoading(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 default Address;

参考

まとめ

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

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

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

コメント

コメントする

目次