Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ローダーの理解 | Next.jsにおけるデータの取得と表示
モダンなWebアプリ構築のためのNext.js 14マスタリー

bookローダーの理解

メニューを表示するにはスワイプしてください

以前、アプリを動的にする方法について説明しました。しかし、大量のデータを扱う場合、データの取得が遅くなり、アプリケーションのパフォーマンスに悪影響を及ぼすことがあります。

ここでは、データリクエストが遅い場合のユーザー体験を向上させるための戦略について詳しく見ていきます。

理論

広く使われている手法としてストリーミングがあります。

ストリーミングは、情報を一度にすべて送信するのではなく、小さな部分に分けて送信する方法です。長い旅を小さなステップに分けて、準備ができたら一歩ずつ進むイメージです。これにより遅延を回避し、すべての読み込みを待たずにウェブページの一部を表示・利用できるようになります。

Next.jsでは、ストリーミングを行う方法が2つあります:

  • ウェブページ全体の場合は、loading.tsxというファイルを使用します;
  • ウェブページの特定部分の場合は、<Suspense>を使用します。

これがどのように機能するか、さらに詳しく見ていきましょう。

ページ全体のストリーミング

loading.tsx フォルダ内に dashboard ファイルを作成し、ダッシュボードページ全体にローダーを追加。

  • loading.tsx: Next.js の特別なファイルで、Suspense を利用。ページのメインコンテンツが読み込まれる間、一時的な UI(フォールバック UI)を表示するために使用。
  • <Sidebar> は静的(変更されない)なため、すぐに表示される。動的コンテンツの読み込み中でもユーザーは操作可能。

素晴らしい!ストリーミングを活用。

バグの修正

現在発生している問題は、loading.tsx ファイルで利用しているローダーが dashboard フォルダ内のすべてのページに適用されている点。

各アプリページごとに特定の UI 要素が必要な場合はどうするか?

このバグを解決するには、ルートグループを実装。(overview) ディレクトリ内に dashboard フォルダを作成し、loading.tsxpage.tsx ファイルをそこに移動。

これにより、loading.tsx ファイルはダッシュボードページのみに適用され、問題が解決。

ルートグループは、ウェブアドレスを変更せずにファイルを整理するための機能。括弧 () を使ってフォルダを作成すると、フォルダ名はウェブアドレスに含まれません。例えば、/dashboard/(overview)/page.tsx/dashboard となります。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  5
some-alt