⊗jsrtPmRtNS 43 of 47 menu

React Routerにおけるナビゲーション状態

リスト内の製品をクリックすると、 初めて製品ページが読み込まれる際には遅延が発生し、 それ以降は速く表示されることがわかります。 これは製品の追加や更新時にも同様で、 クライアント側にキャッシュが存在するためです。

このレッスンでは、ページがどのような状態にあるかを ユーザーに表示します。これを実現するために、 フック useNavigation が役立ちます。 このフックは、いくつかのプロパティを持つオブジェクトを返します。 私たちが注目するのは、その中の1つ、プロパティ state です。

プロパティ state3 つの値を取ることができます: 'idle' (何も起こっていない状態), 'submitting' (POST、PUT、PATCH、DELETEによるフォーム送信時にルートの action が呼び出された状態), 'loading' (次のページをレンダリングするために、次のルートのローダーが呼び出された状態)。 私たちは最後の値に注目します。

では、ファイル root.jsx に移動して、 このフックをインポートしましょう:

import { useNavigation } from 'react-router-dom';

次に、フックの戻り値を受け取るために、 関数 Root 内の return の前に 変数 navigation を定義します:

const { products } = useLoaderData(); const navigation = useNavigation();

そして、そのプロパティ state を利用します。 値が 'loading' の場合、 製品データがレンダリングされている div に クラス loading を設定します:

<div id="product" className={navigation.state === 'loading' ? 'loading' : ''}> <Outlet /> </div>

あとは、 index.css に クラス loading のスタイルを追加するだけです。 読み込み状態の場合、単純に opacity を下げましょう:

div.loading { opacity: 0.3; }

これで、サイトをリロードしてリスト内の製品をクリックしたり、 新しい製品を追加したりすると、 次のページが表示される前に現在のページが一瞬暗くなることが確認できます。

これまでのレッスンの課題で作成したアプリケーションを使用してください。 レッスンの内容を参考に、フック useNavigation を使って、 次の学生データページが読み込まれていることをユーザーが確認できるようにしてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否