反应设置加载的最佳方式

Posted

技术标签:

【中文标题】反应设置加载的最佳方式【英文标题】:react best way to set a loading 【发布时间】:2021-08-24 04:28:24 【问题描述】:

我使用React.lazySuspense 来设置加载。

const LazyComponent = React.lazy(() => 
  const x = new Promise((resolve) => 
    setTimeout(() => 
      return resolve(import("../Components/ListContainer"));
    , 3000);
  );
  return x;
);

function Home() 
  return (
    <> 
      <Suspense fallback=<Loading />>
        <LazyComponent />
      </Suspense> 
    </>
  );

在我的代码中,我将超时设置为3000,但我的目标是让它加载,直到它完全获取所有数据,然后一次呈现所有数据。

有没有办法做到这一点?或者有没有更好的方法来设置加载?

【问题讨论】:

AFAIK Suspense 应该已经处理了这个问题,只要孩子有一个 React.lazy 包裹在其中。 编辑了我的帖子,我面临的问题是它会渲染并关闭加载,然后一一渲染,但我希望它在加载后立即渲染数据。 "...让它加载,直到它完全获取所有数据..." 为了使这成为可能,数据获取本身需要有悬念集成。 【参考方案1】:

您需要动态处理加载,而不是给出 setTimeout 的固定值。

>您可以按照以下步骤操作:

1- 为每个网络调用创建 3 个操作:如 getDataPending、getDataSuccess、GetDataError

2- 在 getDataPending 操作中放入 loading=false

3- 在 getDataSuccess 操作中放入 loading=true 并设置 Error=false

4- 在 getDataSuccess 操作中放入 loading=true 并设置 Error=true

5- 现在在网络调用之前调用 getDataPending

6- 在获取响应时调用成功操作和失败的错误操作案例

这将帮助您实现动态加载

快乐编码

【讨论】:

以上是关于反应设置加载的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

为 UWP 应用加载不同语言的不同文本文件的最佳方式是啥?

在 iPhone 中延迟加载图像的最佳方式是啥?

飞溅/加载屏幕的最佳方式

显示加载/进度指示器的最佳方式?

预加载图像的最佳方式

加载 jQuery 的最佳方式是啥? [复制]