【Next.js入門③】next/linkでSPA構成にしてみる

f:id:nekorokkekun:20190909125430p:plain
こちらの連載記事では、Next.jsの入門チュートリアルを紹介しながら、最終的にポートフォリオファイルの完成を目指します。

筆者もNext.jsビギナーなので、同じくNext.jsに触れるのが初めてだという方を対象に書き進めていきます。

Index.jsをSPA構成にしてみよう

SPAについての説明は省略します。

以下のように書き換えてみましょう。
pages/index.js

import React from 'react';
import Link from 'next/link';

class Index extends React.Component{
    render() {
        return (
            <div>
                <p>Hello Next.js</p>
                <Link href='/'>
                    <a>Home</a>
                </Link>
                <Link href='/about'>
                    <a>About</a>
                </Link>
                <Link href='/portfolios'>
                    <a>Portfolio</a>
                </Link>
                <Link href='/blogs'>
                    <a>Blog</a>
                </Link>
                <Link href='/cv'>
                    <a>CV</a>
                </Link>
            </div>
        )
    }
}

export default Index;

見た目の部分ではMPAとほとんど変わりませんが、
SPAの場合には画面のイニシャライズの際に全てのページデータを読み込んでいるため、
画面「遷移」はありません。

以前のindex.jsはMPAだったため、aタグを押すたびにGETパラメータが飛び、
サーバにデータを要求していましたが、SPAの場合にはそのような構成が必要ではないわけです。

そしてNext.jsの場合には、このSPA構成がnext/linkによって実現してしまうため、
驚くほど簡単にSPAが書けてしまえる、というのが私の実感でした。