【问题标题】:How to get loading progress in React.lazy and Suspense如何在 React.lazy 和 Suspense 中获取加载进度
【发布时间】:2019-06-17 17:18:56
【问题描述】:

我正在使用lazy来分割我的路线,我想知道是否有任何方法可以让我在lazy和suspense中获得加载进度。

目前我是这样使用的。

const Home = lazy(() => import("./Home"));
const About = lazy(() => import("./About"));

function App() {
  return (
    <Router>
      <Switch>
        <Suspense fallback={<div>loading</div>}>
          <Route path="/" exact={true} component={Home} />
          <Route path="/About" component={About} />
        </Suspense>
      </Switch>
    </Router>
  );
}

■ 但我想显示加载进度(如 youtube)。
■ 有什么方法可以检索进度,例如如下所示。

<Suspense fallback={({progress}) => <LoadingBar progress={progress}/>}>

【问题讨论】:

  • 好问题:)

标签: reactjs progress-bar lazy-loading code-splitting


【解决方案1】:

lazy 使用解析或拒绝的 JavaScript 承诺,但它们不报告任何进展。

但是,您可以使用 http://ricostacruz.com/nprogress/ 之类的东西来伪造进度,它会随机增加进度条。

【讨论】:

    【解决方案2】:

    这是我的解决方案:

    const LazyLoad = () => {
        useEffect(() => {
            NProgress.start();
    
            return () => {
                NProgress.stop();
            };
        });
    
        return '';
    };
    
    <Suspense fallback={<LazyLoad />}>
    

    【讨论】:

    猜你喜欢
    • 2021-04-14
    • 2023-04-08
    • 2020-01-13
    • 2019-05-15
    • 2013-09-23
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多