我对 React.lazy() 功能有疑问。我正在开发一个功能,但我被困在了一个点上。
我的场景
我在哪里有一个设置
- 使用 React.lazy() 懒惰地加载一堆组件
- 在 Suspense 上方有一个错误边界包装器。
- 有一个错误回退 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,而不应为其他错误显示。例如
- 如果组件内发生任何错误(可能是空指针错误或其他),我需要显示回退 ui。
- 如果在延迟加载组件期间由于任何 React.lazy() 错误而发生任何错误(即块加载失败或网络错误),我不应该显示 fallbackUI。
问题
到目前为止,我还没有找到任何方法来区分 React 延迟加载期间引发的错误与组件运行时错误。有什么方法可以实现我想要的吗?
我愿意使用多个错误边界,但由于这两个错误都是在安装时抛出的,所以我无法实现我想要的任何东西。任何帮助,将不胜感激。谢谢 !。