getStaticProps
build時にpre-renderする
必ずserver sideのみで実行される
実行されるタイミング
build時
rebalidate時
返り値
props
そのComponentに渡すprops
このデータは、build時にアクセスしたもの、になる
例えば「いいね数」もリアルタイムではなくビルド時のもの、になる
リクエストを繰り返しても値は変わらない
revalidate :: number
build時以降もデータを更新するために指定する
秒数を指定する
例えば10なら10秒
例として60を指定したとする
ビルド後、0~60秒までにアクセスした場合は、ビルド時の静的ファイル(v1)を返却
61秒後以降(例えば70秒)に初めてアクセスした場合も、v1を返却
ただし、このタイミングで裏でそのページを再生成する(v2)
61秒後に2回目以降にアクセスした場合は、v2を返却
そもそもbuild時に静的ページが存在していないので、アクセス時にSSRして返す 2回目以降のアクセスについては他の例と同じ
なんで「n秒後に更新」?
「リクエストがあったら裏で更新(つまり0秒)」とかでいいじゃん
request多すぎたらきつくなるからでしょmrsekut.icon
notFound
404ページを表示するかどうか
データが無かった時にこれを指定するなど
code:ts
export async function getStaticProps(context) {
...
if (!data) {
return {
notFound: true,
}
}
...
}
何のpropsも返さないのにgetStaticPropsを呼ぶことはあるか?
わかりやすいmrsekut.icon