javascript - 将 NProgress 与 "React.lazy"一起使用

标签 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>

我正在使用 React.Suspense显示加载后备。但是,现在我想在当前页面的顶部显示一个进度条,而不是使用正常的 Suspense 加载回退,这会删除整个当前路由以显示回退。

如何添加 NProgress,例如,指示正在加载的页面的加载进度?

也许新的 React 的并发模式可以帮助解决这个问题? :)

最佳答案

解决方法

const LazyLoad = () => {
    useEffect(() => {
        NProgress.start();

        return () => {
            NProgress.stop();
        };
    });

    return '';
};

<Suspense fallback={<LazyLoad />}>

关于javascript - 将 NProgress 与 "React.lazy"一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56640899/

相关文章:

javascript - 无法识别 JQuery 自定义插件功能

css - flex 方向不工作

javascript - 为什么从 const 结果中返回 **element** 作为错误?

javascript - React Suspense 有什么好处?

reactjs - 使用 useState "setter"函数作为回调引用是否安全?

javascript - 将对象传递给 jQuery .each() (而不是函数)会导致错误

javascript - 将 Electron 打包到现有 App 中

javascript - 滚动固定顶部按钮 | CSS 和 jQuery

javascript - 在 React 中使用 Map 与 firebase

reactjs - 当我使用 react 测试库、react.lazy 和 suspense Jest 运行相同的测试两次时,为什么加载程序没有在第二次测试中显示?