React.lazy() 機能について質問があります。機能を開発していますが、ある時点で立ち往生しています。
私のシナリオ
私は私がいる場所にセットアップを持っています
- React.lazy() を使用して一連のコンポーネントを遅延してロードする
- サスペンスの上にエラー境界ラッパーを配置します。
- エラーが発生したときに表示されるエラー フォールバック UI コンポーネント (
ErrorFallbackToast
) があります。
このようなもの(モック)に見えます
import React, { Suspense, useEffect, lazy } from 'react';
const Toast = React.lazy(() => import('../Toast'));
const MyComponent = () => {
const renderComponent = () => {
switch (type) {
case TYPE.toast:
return <Toast />;
default:
return null;
}
};
return (
<ErrorBoundary fallback={ErrorFallbackToast} onError={() => {}}>
<Suspense fallback={<></>}>{renderComponent()}</Suspense>
</ErrorBoundary>
);
};
export default MyComponent;
特定の種類のエラーに対してフォールバック ui を表示する必要があり、他のエラーに対しては表示しないというシナリオがあります。例えば
- コンポーネント内でエラーが発生した場合 (null ポインター エラーなど)、フォールバック UI を表示する必要があります。
- コンポーネントの遅延読み込み中に React.lazy() エラーが発生したためにエラーが発生した場合 (つまり、チャンク読み込みの失敗、またはネットワーク エラー)、フォールバック UI を表示すべきではありません。
問題
今のところ、React の遅延読み込み中にスローされたエラーとコンポーネントのランタイム エラーを区別する手段が見つかりません。私が望むものを達成する方法はありますか?
私は複数のエラー境界を使用することにオープンですが、マウント時に両方のエラーがスローされるため、私が望むものを達成することはできません. どんな助けでも大歓迎です。ありがとう !。