Open33

Nextチュートリアル

さとしさとし
さとしさとし

loading.tsxはNextにおいて特殊なファイル名であり、ページコンテンツの読み込み中に代替されるファイルとなる。

さとしさとし

loading.tsxの配下にpage.tsxが存在すると、それらに対しても適応される。

さとしさとし

(overview)のようにカッコで囲んだフォルダを作成してその配下にloading.txtを格納することで、並列以上のフォルダへの適応を回避できる。

さとしさとし

React Suspenseを利用すれば、ページ全体ではなくより細かいローディングの適用が可能。

さとしさとし

Suspenseを利用することで、一部のコンポーネントに対してローディング画面の適用が可能。

さとしさとし

今更ながら、jsの基本的な実装ルールを覚えられていないので、React・Nextに関することは把握しておきたい。

さとしさとし
さとしさとし

Partial Prerendering (PPR).
事前にサーバ側でレンダリングを済ましておくもの。

さとしさとし

next.config.mjsにincremantalというオプションを追加しておく。

さとしさとし

合わせて、export const experimental_ppr = true;の定義をtxs側に追加することで実現できる。

さとしさとし
さとしさとし

Searchはクライアントコンポーネント、useSearchParamsフックを利用してパラメータにアクセスする。Tableはサーバコンポーネント、これ自体でデータをフェッチでき、searchParamsにページからパラメータを渡すことができる。

さとしさとし

onchangeだとキーストロークのたびにDBアクセスが発生するが、本来はタイピングが終わった時点でDBアクセスすれば十分。
ビルド時に以下のコマンドを実行して、useDebouncedCallbackを利用すれば実現できる。
pnpm i use-debounce

さとしさとし
さとしさとし

動作確認時にuseActionStateが使えないという実行時エラーが発生した。
理由は、react・nextのバージョンがuseActionStateが利用できるバージョンのものと合致していなかったため、つまりチュートリアルで指定されたものと異なったため。
対応としては、チュートリアルのバージョンを参照してpackage.jsonを修正した。
pnpm installを実行して、package.jsonに指定したバージョンのモジュールを再インストールした。

さとしさとし

ESLintは実装上の問題を検知してくれるツールのようなもの?

さとしさとし
さとしさとし

チュートリアルを実施後、vercelにデプロイをしたらエラーになった。
envに設定した内容と同じものをvercelのsetting→Environment Variablesにおいて設定する必要があった。
具体的には以下。
・NEXTAUTH_URL
・AUTH_SECRET

さとしさとし

vercelで確認してみると、invoiceの新規登録時に連続ボタン押下すると、押下数だけ新規レコードが登録されている模様。