「Next page」の装飾をいじってたとき・・・
今まで
あんまりNext pageボタンを押して
過去の記事一覧を眺めることもなかった。。。。。
ボタン装飾を確認するため
ポチポチ押してた時に感じた違和感・・・・。
「このボタンを押した後、2ページ目以降に「Back page」ボタンはない。」( ゚д゚)ハッ!
作ってみよーう(๑>◡<๑)
って、、、、
結構消耗しました(;´Д`)
※ ブログのスクショが装飾変更後のものも混じっていますが気になさらずにm(_ _)m
実装した時はなんとなくサンプルコードを拝借して動いたので
気軽にツイートしたものの、
「なぜ?」を追い求めれば追い求めるほど深い知識が必要でした。
今日は「なぜ?」を解読するために
公式ドキュメントなどを参照しながら
コードにメモして納得させていく内容です。
実装編は次の記事をご覧ください\(^o^)/
記事一覧トップページ
「Next page」を押すとリンクが日付になる
詳細:https://nextjs.org/docs/routing/introduction
Index routes
のことだね2ページ目以降の日付リンクは汎用性のあるroutes
が該当しそう・・・
Dynamic routes
を使って2ページ目以降のページリンクを作っているとしたら・・・詳細:https://nextjs.org/docs/basic-features/data-fetching#getstaticpaths-static-generation
dynamic routes
はgetStaticPaths
を使ってパスを作っていく!!return
にあるpaths
についてもう少し見ていくと・・・・
詳細:https://nextjs.org/docs/basic-features/data-fetching#the-paths-key-required
getStaticPaths
を取り出すとpaths
の内容を返してくれるのか・・・・。dynamic routesって・・・
詳細:https://nextjs.org/learn/basics/dynamic-routes/page-path-external-data
フォルダーから似たような部分を探してみる。
記事一覧は日付のパスになっていたよな・・・
pages/blog/before/[date].tsxより
【Next Page】ボタンの記述を発見!!!
pages/blog/index.tsxの内容とそっくり
Next pageのコードをコピペして表示だけ「Back page」としておく。
pages/blogs/intex.tsxより
👇
結果:
Next pageをクリックして次のページも「Back page」が表示されているかを確認
「Back page」がでない!!!
今度は[date].tsxの部分にダミーback pageボタンを設置してみる。
結果を確認。
出て来た。
pages/blogs/intex.tsx
はいじらなくていいね。詳細:https://nextjs.org/docs/basic-features/data-fetching#the-paths-key-required
表示させるのにgetStaticPaths
を使っている。
詳細:https://nextjs.org/docs/basic-features/data-fetching#technical-details-1
getStaticProps
だけではなくgetStaticPaths
も使う必要がある。[date].tsxより
returnの値の[path]
が一覧ページのパス。
[path]
について詳しく見るために、getPosts
を辿ってみる。。。。
上の方に行くとlib/notion/client
からimportされていることが分かる。
lib/notion/client.tsより
[date].tsxをもう一度見て追記メモ。
次にgetBeforeLink
を詳しく見ていく。。。
今度は/lib/blog-helpers
からimportしているみたい。
lib/blog-helpers.tsより
/blog/before/日付
と表示してくれる・・・[date].tsxをもう一度見て追記メモ。
posts[posts.length - 1].Date
が
本当にページ毎の最後の記事の日付になっているか確認。
Next Pageボタン(画面上はNextに修正されてますが・・・)をクリックすると・・・
前のページの最後の記事の日付になってる\(^o^)/
[date].tsxのNext Pageボタンのリンク部分を見てみると・・・・
getStaticPathsと同じpathになってる\(^o^)/
[date].tsxのgetStaticPaths内にあったposts
これはgetPostsを意味している。
[date].tsxのNext Pageボタン部分のposts
このpostsはgetPostsではない。
getStaticProps
内にあるpostsのこと。
詳細:https://nextjs.org/docs/basic-features/data-fetching#when-should-i-use-getstaticprops
なるべく軽く・早く動くように雛形をなるべく作りその中で読み込ませるデータ項目のこと。
getStaticProps
内にある
postsはgetPostsBefore
を意味しているらしい。。。。。
import部分に遡るとlib/notion/client.ts にあるらしい。。
client.tsより
[date].tsxに戻って解読してみる。
[date].tsxを遡るとpostsの下にある。
firstPostになる前はgetFirstPost
。
lib/notion/client.ts
からimportされている。
client.tsより
追加でfirstPostについて分かったことを整理
Next Pageボタンが表示される条件:
今日はここまで\(^o^)/
Next pageボタンのリンクが奥深くて納得するまで解読するのに結構時間かかったけど、
やっと[date].tsx内で記述されていた条件分岐の意味を理解できた〜(*´ェ`*)
ついでにgetStaticpathsやgetStaticPropsも復習できて理解が深まったかも〜(´ε` )
もっと詳しく知りたい方は、
アルパカ先生の記事もあります\(^o^)/
フォールバックとか、
キャッシュ参照とか、
バリデーションとか、
まだまだピンと来ていないので勉強していきたいな〜と思っております。。。( ゚д゚)ハッ!
奥が深いぜ
続きはこちら\(^o^)/
▼ この記事に興味があったら同じタグから関連記事をのぞいてみてね
RSSリーダーにatomのリンクを登録すると通知が行くよ🐌
https://herohoro.com/atom
やってみてね(*´ω`*)(*´ω`*)
フォロー大歓迎\(^o^)/
フォロー大歓迎\(^o^)/