Lui*_*ipe 12 javascript reactjs react-suspense
我有以下组件树:
<BrowserRouter>
<Suspense fallback={<h1>MyFallback</h1>}>
<Switch>
<Route component={HomePage} path="/" exact />
<Route
component={lazy(() => import('./pages/Auth/Login'))}
path="/auth/login"
exact
/>
</Switch>
</Suspense>
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
我React.Suspense用来显示加载回退。但是,现在我想在当前页面的顶部显示一个进度条,而不是使用正常的 Suspense 加载回退,这会删除整个当前路线以显示回退。
例如,如何添加 NProgress 以指示正在加载的页面的加载进度?
也许新的 React 的并发模式可以帮助解决这个问题?:)
小智 5
这是解决方案
const LazyLoad = () => {
useEffect(() => {
NProgress.start();
return () => {
NProgress.stop();
};
});
return '';
};
<Suspense fallback={<LazyLoad />}>
Run Code Online (Sandbox Code Playgroud)
小智 -1
这是我使用反应钩子的解决方案。
import React, { useEffect } from 'react';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
const Loading = () => {
useEffect(() => {
NProgress.start();
return () => {
NProgress.done();
};
}, []);
return (
<Row>
<Col span={12} offset={6}>
Loading
</Col>
</Row>
);
};
export default Loading;
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我用来useEffect检测组件状态。
NProgress.start();在组件安装时调用NProgress.done();在组件卸载时调用作为清理。返回值是可选的,你可以渲染任何你想要的。
您还可以使用基于类的组件来实现相同的结果。为此,您可以使用componentWillUnmount()和componentDidMount()。
| 归档时间: |
|
| 查看次数: |
2876 次 |
| 最近记录: |