react
项目为了做性能优化减小包体积在项目中用了大量的React.lazy
加载组件进行代码分割,效果也挺明显,包大小从1.4M
缩小到110KB
但是到生产后监控到通过React.Lazy
这种方式加载组件会有失败的场景(走到了代码的catch
)。请问下这种场景页面是不是会报错白屏(复现不出来不知道现象是怎么样的)
请问各位大佬这种情况该怎么处理啊?添加重试功能?
还是像官方的处理一样添加ErrorBoundary
?
const ModuleA = React.lazy(() => {
return new Promise((resolve: any, reject) => {
import('moduleWrap')
.then(module => {
resolve(module)
})
.catch(err => {
/****/
})
})
})
用 Error Boundaries 和重试:
import React, { Component, lazy, Suspense } from 'react';
// Error Boundary
class ErrorBoundary extends Component {
state = { hasError: false };
static getDerivedStateFromError(error) {
return { hasError: true };
}
componentDidCatch(error, info) {
// log the error to an error reporting service
}
render() {
if (this.state.hasError) {
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
// Retry logic
function withRetry(importPromise) {
let retryCount = 0;
function tryImport() {
return importPromise().catch(error => {
if (retryCount < 3) {
retryCount++;
return tryImport();
}
throw error;
});
}
return tryImport();
}
// Lazy load the component
const LazyComponent = lazy(() => withRetry(() => import('./LazyComponent')));
// Use the lazy component
function MyComponent() {
return (
<ErrorBoundary>
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
</ErrorBoundary>
);
}
我试图在react with typescript中创建一个登录表单。但setEmail方法不接受该值。它表示“string”类型的参数不能分配给“SetStateAction”类型的参数。我该怎么解决它?
swiper中的图片如何懒加载,还是根本不做懒加载? 求大佬指教!!!
我有两个不同类型的对象,我想用一个对象指定另一个。 的接口有一个,而到
问题内容: 我的应用程序具有以下结构: 我有一个包含一些脚本的功能文件夹,以及一个在ui.py文件上包含PyQt生成的代码的ui文件夹。 还有一个main.py文件,该文件加载ui.py以显示界面,并且ui.py从根目录的“ images”文件夹中加载一些图像。 如果我直接在python上执行脚本(main.py文件中为double clic),则图像不会显示。 但是,如果将终端与“ python
“java.lang.OutOfMemoryError” .我想是因为我用了毕加索在我的RecycleView适配器。 代码如下:
本文向大家介绍Array.filter中如何正确使用Async,包括了Array.filter中如何正确使用Async的使用技巧和注意事项,需要的朋友参考一下 1. 如何仅保留满足异步条件的元素 在第一篇文章中,我们介绍了 async / await 如何帮助处理异步事件,但在异步处理集合时却无济于事。在本文中,我们将研究该filter函数,它可能是支持异步函数的最直观的方法。 2. Array.