記事の末尾から前後の記事に飛べるようにして、他の記事も読んでもらえるようにします。
記事ページの生成はgatsby-node.js
にGraphQLクエリーを投げて、記事ごとに生成していく形になっていると思います。実はgatsby-source-contentful
で引っ張ってくる記事データにはnext
とprevious
というオブジェクトが含まれており、そこから当該の記事の前後のデータが拾えます。試しにGraphiQLで見てみましょう。
前後の記事のデータが取れていること、前後に記事がない場合はnull
が帰ってくるのがわかると思います。gatsby-node.js
のGraphQLクエリーを、前後の記事のデータを取ってくるように変更しましょう。
このブログのパーマリンクの形式は/YYYY/MM/slug
になっているので、日付を/YYYY/MM/
の形式で取ってくることでリンクを作りやすくします。
忘れずにこれらの情報を生成するページに渡しておきましょう。
templates/post.tsx
でよしなに呼んでやることができます。前後にページがない時はnullが帰ってくるので、そこだけ検知してあげる必要があります。
実際のナビゲーションはPostNav
というコンポーネントで生やしています。
いちいちnullの判定をしているので、そこはもう少しエレガントにしたい所です。
あとはスタイルを付けるだけです。