Next.jsに用意されている便利な機能とは? 初心者が知っておきたい基本機能を紹介
Next.jsとmicroCMSを使ってWebサイトを作っていると、
Link、Image、
notFound()、useRouter()など、
HTMLだけでは見かけなかった名前が登場します。
今回は、それぞれの詳しい使い方に入る前に、
「どのような機能で、どんな場面に使うのか」を
初心者目線でやさしく整理します。
Next.jsには便利な機能が用意されている
HTMLとCSSだけでWebページを作っていたときは、
ページを移動するにはaタグ、
画像を表示するにはimgタグを使っていました。
<a href="/blog/">
ブログを見る
</a>
<img
src="/images/photo.jpg"
alt="記事の写真"
>
Next.jsでもHTMLの要素は使えますが、 より快適なページ移動や画像表示を実現するために、 Next.js独自の機能が用意されています。
import Link from "next/link";
import Image from "next/image";
<Link href="/blog">
ブログを見る
</Link>
<Image
src="/images/photo.jpg"
alt="記事の写真"
width={800}
height={500}
/>
同じことができるように見えるけれど……
HTMLのタグとは何が違うのでしょうか。
どのような場面で使い分けるのでしょうか。
初めて見ると、名前だけでは役割が分かりにくく感じました。
まずは細かな仕様を覚えるのではなく、 それぞれが何を担当しているのかを見ていきます。
今回は使い方を詳しく掘り下げるのではなく、
「Next.jsにはこのような便利な機能がある」
という全体像をつかむ記事です。
今回紹介する4つの便利な機能
今回のNext.jsとmicroCMSを使ったWebサイト制作では、 主に次の4つの機能を使用しました。
サイト内の別ページへ移動するための機能です。
画像を見やすく、効率よく表示するための機能です。
ページや記事が存在しないときに使う機能です。
ボタンや処理をきっかけにページを移動します。
4つともNext.jsでよく使う便利な機能ですが、 厳密には同じ種類ではありません。
LinkImagenotFound()useRouter()厳密には種類が異なりますが、 この記事ではまとめて 「Next.jsが提供する便利な機能」として紹介します。
Linkはページを移動するための機能
サイト内の別ページへ移動するリンクを作ります。
Linkは、
Next.jsのサイト内で別のページへ移動するときに使う
コンポーネントです。
import Link from "next/link";
<Link href="/blog">
ブログを見る
</Link>
HTMLのaタグに似ていますが、
Next.jsのページ移動に合わせた仕組みが用意されています。
Imageは画像を表示するための機能
Next.jsで画像を表示するためのコンポーネントです。
Imageは、
通常のimgタグと同じように画像を表示します。
さらに、画像の大きさや読み込み方を調整し、 ページを快適に表示するための仕組みも持っています。
import Image from "next/image";
<Image
src="/images/photo.jpg"
alt="記事の写真"
width={800}
height={500}
/>
notFound()は404を表示するための機能
ページや記事が存在しないことを伝える関数です。
microCMSの記事詳細ページでは、 URLに指定された記事が存在しない場合があります。
そのようなときにnotFound()を使うと、
404ページへ切り替えられます。
if (!article) {
notFound();
}
実際に表示される404画面の内容は、
not-found.tsxというファイルで作ります。
useRouter()は処理からページを移動する機能
JavaScriptの処理からページを移動するためのHookです。
Linkは、
画面に表示されたリンクをユーザーがクリックして移動します。
一方のuseRouter()は、
ボタン操作やフォーム送信などの処理をきっかけに
ページを移動したいときに使います。
const router = useRouter();
router.push("/contact");
どのように使い分ける?
4つの機能は名前だけを見ると難しく感じますが、 使用する場面で分けると分かりやすくなります。
「コンポーネント」「関数」「Hook」という分類よりも、
最初は「何をしたいときに使うか」で覚えると
理解しやすくなります。
microCMSサイトではどこで使う?
今回制作したNext.jsとmicroCMSのWebサイトでは、 4つの機能を次のような場面で使用しました。
記事のサムネイル画像を表示します。
カードから記事詳細ページへ移動します。
記事が存在しない場合に404を表示します。
検索後に結果ページへ移動します。
4つの機能は単独で使うだけでなく、 一つのWebサイトの中で役割を分担しながら使われています。
詳しい内容は個別記事で解説します
この記事では、 4つの機能の役割と使用場面を簡単に紹介しました。
それぞれの詳しい仕組みやコードについては、 個別の記事として一つずつ取り上げる予定です。
HTMLのaタグとNext.jsのLinkは何が違う?
ページ全体の再読み込みや、 Next.jsのページ遷移について整理します。
imgタグとNext.jsのImageは何が違う?
widthとheight、画像最適化、 外部画像の設定などを解説します。
notFound()とnot-found.tsxの関係とは?
404を表示する仕組みと、 オリジナル404ページの作り方を整理します。
useRouter()とは?Linkとの違いと使い方
push、replace、backなど、 ページ移動に使う方法を解説します。
この記事を最初の案内ページにして、 それぞれの個別記事へつなげる構成にできます。
まとめ:まずは役割を知るところから
Next.jsには、 Webサイト制作を助けてくれる便利な機能が あらかじめ用意されています。
今回は、実際のNext.jsとmicroCMSのサイト制作で使用した 4つの機能を紹介しました。
今回覚えておきたいこと
-
Linkはサイト内のページへ移動する -
Imageは画像を表示する -
notFound()は404ページへ切り替える -
useRouter()は処理からページを移動する - 4つは厳密にはコンポーネント、関数、Hookに分かれる
- 最初は種類よりも使用場面で覚えると分かりやすい
最初から詳しい仕様をすべて覚えようとすると、 情報が多くなりすぎて混乱してしまいます。
まずは「このようなことができる」と知り、 実際に必要になった機能から 個別に詳しく学んでいくのが分かりやすいと感じました。
Next.jsのコードが読みやすくなっていきます。