⊗jsrtPmRtPR 47 of 47 menu

React Routerでのパスなしルート

このレッスンでは、パスなしルートのさらに別の便利な特性について検討します。

各ルートオブジェクトに対して、errorElementプロパティを追加でき、その値にはエラー発生時に表示したい要素を設定できることはご存知でしょう。

しかし、すべてのルートでerrorElementが同じである場合はどうでしょうか?もちろん、それぞれに同じものを設定することもできますが、パスなしルートを利用して、対象となる子ルートをその中にラップすることもできます。そうすれば、そのいずれかでエラーが発生した場合、パスなしルートがエラーを捕捉し、自身のerrorElementを表示します。

main.jsxファイルに移動し、すべての子ルートをパスなしルートでラップしてその子とします(このルート自体はルートの子になります)。errorElementプロパティも追加することを忘れないでください:

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, loader: rootLoader, action: rootAction, children: [ { errorElement: <ErrorPage404 />, children: [ { index: true, element: <Index /> }, { path: 'products/:productId', element: <Product />, loader: productLoader, }, { path: 'products/:productId/edit', element: <EditProduct />, loader: editProductLoader, action: editAction, }, { path: 'products/:productId/delete', action: deleteAction, }, ], }, ], }, ]);

では、このコードの動作をどのように確認すればよいでしょうか? エラーをスローする行を追加することで確認できます(確認後は削除することを忘れないでください)。例えば、製品削除のためのaction関数の最初の行に追加してみましょう。そうすれば、製品を削除しようとしたときにエラーが表示されます:

export async function action({ params }) { throw new Error('error'); await deleteProduct(params.productId); return redirect('/'); }

では、何らかの製品を削除してみてください。

過去のレッスンの課題で作成したアプリケーションを使用してください。このレッスンの内容を参考に、子ルートをerrorElementプロパティを持つパスなしルートでラップし、それが機能することを確認してください。

日本語
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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否