【YWT】210306
1. [Y] やったこと
- 3.7m歩いた
- Lineモバイルの支払い方法でLine payが選択できなくて、クレジット払いに変更した
- Next.jsのチュートリアルをすすめた
- 久々に高円寺のたちばなで餃子を食べた
2. [W] わかったこと
Next.jsの動的なルーティングの概要についてチュートリアルをすすめた
- 外部に依存するデータのパス生成と生成手順について
- 静的生成で必要なデータをフェッチするときには
getStaticProps - 各ページパスが外部データに依存している場合、そのパスを静的生成するのは
getStaticPaths - パスを動的に生成するための手順
- 表示するページのレイアウトを管理するコンポーネントを用意する
- 同ページ内に
getStaticPathsでページ情報を配列として取得 - 同ページ内に
getStaticPropsで静的生成に必要なデータを取得
pagesディレクトリ配下に[]をつけたjsファイルを作ることで、動的ルーティングが有効になるgetStaticPathsは動的ルーティングを利用する際に静的なファイルを生成するためのAPI- 事前ビルドするパスを配列にして返す
getStaticPropsでは、ルーティングの情報が入ったパラメーターをparamsで受け取る- ビルド時に
getStaticPathsとgetStaticPropsの処理によって、表示するページが入っているディレクトリのパスを動的ルーティングの対象にできるnpm run buildで確認できるプロジェクトディレクトリ ├── pages │ └── posts │ └── [id].js // `posts/` ではじまるクエリを動的ルーティングする └── posts ├── 記事.md // 表示するページのmarkdown ├── 記事2.md // 表示するページのmarkdown ︙- Next.js 9.3新API getStaticProps と getStaticPaths と getServerSideProps の概要解説
getStaticPathsで表示するすべてのページを取得し、getStaticPropsで指定されたIDをもとにそのページを取得する
Next.jsの動的なルーティングに使うパス取得の実装方法についてチュートリアルをすすめた
- 実装方法について
- 外部データを読み込むモジュールを作成
.mdの拡張子を取り除いて取得- 取得したファイル名がそのままパスとなる
getStaticPathsで受け取るデータ形式にはいくつか制約がある- オブジェクトの配列にする必要がある
- 各オブジェクトには
paramsというキーをもつオブジェクトが必要になる{ params: {…} }
- 外部データを読み込むモジュールを動的ルーティングをするページの
getStaticPathsで呼び出してreturnする - 動的ルーティングに必要なパスの返し方について
Next.jsの動的なルーティングでページを表示する実装方法についてチュートリアルをすすめた
getStaticPropsで表示するページのパスが渡されたときの処理を作成するparamsをパラメータとして受け取るparams.idを表示するパスとして、表示するページのデータを取得し、propsとして返す- データ取得時に、非同期式で受け取る
- 表示部で
propsを受け取り、表示に必要なデータを組み立てる
以前、
Laravelでルーティングをしたときは前もって一覧化した上で管理していたのもあって、なかなか慣れないなと思ったNext.jsの動的なルーティングを使うときのヒントについてチュートリアルをすすめた
- 動的ルートを使う歳のtips
getStaticPathsもgetStaticPropsと同様に、外部のデータを取得できるdev環境ではリクエストごとにgetStaticPathsが走るproductionではビルド時に動く- Next.jsのルーターにアクセスする場合、
useRouterでアクセスできる - 404ページは
pages/404.jsを作成することでカスタムできる
Next.jsのAPIルートについてチュートリアルをすすめた
pages/apiディレクトリを作って、apiのエンドポイントとなるファイルが作れるpages/api/hello.jsを作ったら、エンドポイントはドメイン/api.helloとなる- ファイル内の書き方の例
export default function handler(req, res) { res.status(200).json({text: 'hello'}) }
- サーバーレス関数(ラムダ)として使える
Next.jsのAPIルートのヒントについてチュートリアルをすすめた
- APIルートは
getStaticPaths、getStaticPropsからフェッチでしてはならない- 代わりに、
getStaticPaths、getStaticPropsに直接サーバーサイドのコードを書く - 理由として、
getStaticPaths、getStaticPropsはサーバーサイドでのみ動作するため、クライアント側では実行されない getStaticPaths、getStaticPropsはJSバンドルされないので、ブラウザには送信されないため、直接データベースクエリが書ける
- 代わりに、
- APIルートの良いユースケースとしては、フォーム入力がある
- ページにフォームを作成して、
POSTでAPIルートにリクエストの送信ができる - APIルートのこ~後はクライアントバンドルの一部ではないので、サーバー側のコードを安全に使える
- ページにフォームを作成して、
- プレビューモードや動的APIルートも使える
- APIルートをクライアント側から呼び出す例としてこれが参考になりそう
- APIルートは
これでNext.jsのチュートリアルはNext.jsのプロジェクトをデプロイするチャプターのみになった
3. [T] 次にやること
- Next.jsのチュートリアルをすすめる
- 図書館で借りた本を読む(D-3)
- github learning labのチュートリアルをすすめる
- node.js関連の積読を解消する(69/200)