Remixで`Cannot destructure property ‘categories’ of ‘vite_ssr_import_2.useLoaderData(…)’ as it is undefined.`が発生した場合の対処法
Remixアプリを実装していてちょくちょく遭遇したエラーについて、簡単にまとめました。エラーハンドリングを試みた際に発生する様子ですので、エラー系でのRemixの動きについてもっと知る必要がありそうです。
広告ここから
広告ここまで
目次
Remixアプリを実装していてちょくちょく遭遇したエラーについて、簡単にまとめました。エラーハンドリングを試みた際に発生する様子ですので、エラー系でのRemixの動きについてもっと知る必要がありそうです。
遭遇した現象
Remixを使用したReactアプリケーションにおいて、以下のようなエラーが発生しました:
You cannot `useLoaderData` in an errorElement (routeId: root)
TypeError: Cannot destructure property 'categories' of '__vite_ssr_import_2__.useLoaderData(...)' as it is undefined.
このエラーは<CategoriNavigation>
コンポーネント内で発生している様子でした。
対策
ErrorBoundary系の処理ではuseLoaderData
でデータが取得できない様子です。そのため、このようにuseLoaderData
フックを使うケースを調整しました。
// 通常のコンポーネント
export function CategoriNavigation() {
const data = useLoaderData<LoaderData>();
if (!data || !('categories' in data)) {
return <div>データの読み込みに失敗しました</div>;
}
const { categories } = data;
return (
// categories を使用したJSX
);
}
なんてことはないnullable
なデータのハンドリングですが、エラーメッセージからここに辿り着くまで時間がかかったため、あとで振り返れるようにここにまとめます。