- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我所知,Suspense 组件是 code splitting 的 React-ian 方法。 ,这使得网页加载速度更快。现在,假设您有一个如下所示的组件层次结构:
<App>
<Suspense fallback={<FirstLoader/>}>
<OuterWrapper>
<Suspense fallback={<SecondLoader/>}>
<InnerWrapper>
{content}
</InnerWrapper>
</Suspense>
</OuterWrapper>
</Suspense>
</App>
首先假设只有 InnerWrapper
是延迟加载的,在第二种情况下它们都是延迟加载的。
React 是否会在加载 OuterWrapper
后推迟 InnerWrapper
的加载,还是同时加载?具体来说,在加载第一个组件后是否推迟第二个 Suspense 后备的渲染。
最佳答案
Does React defer the loading of InnerWrapper after OuterWrapper is loaded, or are they both loaded simultaneously? Specifically, whether the rendering of the 2nd Suspense's fallback is deferred after the first component is loaded.
第二个 Suspense
的渲染将延迟到 OuterWrapper
。作为子项传递给 OuterWrapper
的所有内容:
<Suspense fallback={<SecondLoader/>}>
<InnerWrapper>
{content}
</InnerWrapper>
</Suspense>
在渲染时作为 props.children
传递给 OuterWrapper
。因此,第二个 Suspense
的渲染只能在 OuterWrapper
被获取并执行时发生。
此外,在 InnerWrapper
延迟加载的情况下,它将在 OuterWrapper
渲染后获取。因此,在这种情况下,两个组件不是并行获取的,而是一个接一个地获取的。
我创建了一个示例来展示它:https://glitch.com/edit/#!/dusty-ghoul
您可以通过修改此处的delay
参数来设置延迟,之后脚本将发送到客户端:
// public/index.js
const OuterWrapper = React.lazy(() => import("./OuterWrapper.js?delay=5000"));
const InnerWrapper = React.lazy(() => import("./InnerWrapper.js?delay=1000"));
关于reactjs - 嵌套的 Suspense 组件会导致顺序加载还是并行加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58573442/
一 点睛 当线程在访问某个对象时,发现条件不满足,就暂时挂起等待条件满足时再次访问,这就是 Guarded Suspension 设计模式。该设计模式的关注点在于临界值的条件是否满足,当达到设置的临界
我正在尝试使用 Suspense 在 Promise 未解决时呈现后备。我做错了什么? 它应该在 fetch promise 不返回数据时呈现回退。但是当我尝试从浏览器获取数据时,回退不会出现。 ex
我想延迟加载我的组件以减少我的初始包大小并使用 react 路由器使用代码拆分即时获取组件。 但是,当使用 React Suspense 时,它们会强制您使用后备进行加载。 这行不通: const
我知道 React suspense 是新的,还没有正式发布生产,但我想知道它的主要好处是/或使用它会是什么? 我看不出它所做的任何事情都是“新的”或替换不存在的东西? 我知道它允许我从上到下加载东西
据我所知,Suspense 组件是 code splitting 的 React-ian 方法。 ,这使得网页加载速度更快。现在,假设您有一个如下所示的组件层次结构: }>
我想在产品添加成功后显示一个对话框,但是当我点击“添加到购物车”按钮时,我收到了图像中的那种类型的错误。 这个对话框想显示使用httpException,在我使用这个httpExcetion的prod
我有几个关于 React.Suspense 的问题。 下面是一些示例代码供引用: // components/ComponentA/index.js import React from "react"
我正在尝试使用 webpack 构建一个基本的 react 惰性应用程序。它成功创建了 block ,但是当应用程序运行时,它在错误的目录中查找 block ,因此,应用程序崩溃。我的构建目录是 di
我有点卡在如何实现这个问题上。 我正在渲染 map ,我需要 useRef 在创建 map 时将元素传递给 map 。 首先要做的是需要下载源文件,然后 mapkit 类就可以使用了。我用悬念来解决这
我正在使用一些非常标准的 create-react-app 样板,它使用延迟加载和 react-i18next 作为翻译库。该库使用 i18next-http-backend 从远程 API 获取翻译
我有一个使用 MUI 的 React 应用程序,现在我已经使用微调器实现了悬念,它在加载内容时作为后备组件启动。我很想为回退组件添加淡入/淡出过渡,因为目前这种变化太突然了。 我的设置(对于这个特定问
我没有找到任何明确的信息,所以我决定向你询问。我有基于 redux 基础设施的应用程序。有没有办法使用 Suspense 来等待 axios 的 redux 获取数据?我将我的操作调用放在 compo
我目前正在使用 React 16 与 Suspense 和 Lazy 来对我的代码库进行代码分割。虽然我想预加载组件。 在下面的示例中,我有两条路线。有没有办法在 Prime 安装后立即预加载 Dem
我正在努力寻找使用 的问题悬疑和 react 钩子(Hook) . 有几个关键问题使用下面的 React 代码。 import { Suspense, useState, useEffect } fr
通常当我返回一个依赖于获取数据的组件(我使用的是 nextjs 13)时,我有条件地渲染元素以确保值可用: 表格组件: export const Table = ({ ...props }) => {
通常当我返回一个依赖于获取数据的组件(我使用的是 nextjs 13)时,我有条件地渲染元素以确保值可用: 表格组件: export const Table = ({ ...props }) => {
给定一个具有数千个连接设备的 Azure IOT 中心。鉴于设备的某些子集存在某种软件和硬件问题,导致 IOT 中心充斥着(不良)流量。 我们如何“暂停”或以其他方式标记特定设备,而不从设备注册表中删
我正在尝试写一个 Jest使用 React.Suspense 的组件的单元测试. 正在测试的组件模块的简化版本: MyComponent.js import React from 'react'; e
Gor Nishanov、Jens Maurer、Richard Smith 和 Daveed Vandevoorde 的“协程措辞”(文档 C++ P0057R5),参见 P0057r5 , 讲了很
我正在研究 和 React.lazy()概念,我想更好地理解为了向现有应用程序添加一些逻辑会发生什么。 让我们从定义开始: The React.lazy function lets you rende
我是一名优秀的程序员,十分优秀!