Nextチュートリアル
loading.tsxはNextにおいて特殊なファイル名であり、ページコンテンツの読み込み中に代替されるファイルとなる。
loading.tsxの配下にpage.tsxが存在すると、それらに対しても適応される。
(overview)のようにカッコで囲んだフォルダを作成してその配下にloading.txtを格納することで、並列以上のフォルダへの適応を回避できる。
React Suspenseを利用すれば、ページ全体ではなくより細かいローディングの適用が可能。
Suspenseを利用することで、一部のコンポーネントに対してローディング画面の適用が可能。
今更ながら、jsの基本的な実装ルールを覚えられていないので、React・Nextに関することは把握しておきたい。
URLSearchParamsを利用することで、?page=1&query=a.のようなURLパラメータを取得できる。
ページの再描画なしで検索結果を表示させられる。
以下にそのあたりの情報あり。
Searchはクライアントコンポーネント、useSearchParamsフックを利用してパラメータにアクセスする。Tableはサーバコンポーネント、これ自体でデータをフェッチでき、searchParamsにページからパラメータを渡すことができる。
onchangeだとキーストロークのたびにDBアクセスが発生するが、本来はタイピングが終わった時点でDBアクセスすれば十分。
ビルド時に以下のコマンドを実行して、useDebouncedCallbackを利用すれば実現できる。
pnpm i use-debounce
Paginationを利用してページングを実現する。
動作確認時にuseActionStateが使えないという実行時エラーが発生した。
理由は、react・nextのバージョンがuseActionStateが利用できるバージョンのものと合致していなかったため、つまりチュートリアルで指定されたものと異なったため。
対応としては、チュートリアルのバージョンを参照してpackage.jsonを修正した。
pnpm installを実行して、package.jsonに指定したバージョンのモジュールを再インストールした。
ESLintは実装上の問題を検知してくれるツールのようなもの?