首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >知道UI何时在React / Redux中就绪

知道UI何时在React / Redux中就绪
EN

Stack Overflow用户
提问于 2017-09-25 20:37:24
回答 6查看 2.4K关注 0票数 19

我想知道我的应用程序需要多长时间才能“准备好”让用户与其交互。应用加载的时间线包括以下内容:

  1. DOM加载。
  2. 初始反应渲染。从各种componentDidMount()s
  3. HTTP调用触发的
  4. HTTP调用返回。Redux状态通过HTTP responses.
  5. React呈现来更新,其中包含来自HTTP responses.
  6. All的新值。初始加载完成。用户已准备好与应用程序进行交互。

在这个过程的最后,我想触发一个跟踪事件来记录window.performance.now()的值。

我不确定做这件事最好的方法是什么。React的组件系统在解耦UI的各个部分方面做得很好。在这种情况下,不幸的是,这意味着我没有一个简单的地方来检查“一切都用新数据呈现了吗”。

我尝试过或考虑过的事情:

  1. 寻找一个React生命周期钩子,它可以告诉我是否有子级在更新。就像componentOrAnyChildDidUpdate()一样。我认为这并不存在,它可能与React philosophy.
  2. Hack通过contextanyChildDidUpdate()生命周期钩子相悖,它使我应用程序中的每个组件要么子类成为助手抽象基类,要么被包装在更高阶的组件中。这似乎很糟糕,因为context是通过store.subscribe()连接到Redux状态的experimental API.
  3. Subscribe。更新Redux状态以显式记录是否所有HTTP调用都已返回。一旦所有的HTTP调用都返回了,并且React完成了重新渲染,我就知道要触发跟踪回调了。问题是知道React何时完成重新渲染。如果我的store.subscribe()回调保证在react-redux回调之后同步执行,它就能工作。但事实并非如此。

在React中有没有好的方法可以做到这一点?

EN

回答 6

Stack Overflow用户

发布于 2017-10-06 15:15:17

我担心在React中没有一个通用的好方法来做到这一点,这是与你的应用程序的结构相关的“逻辑”。

我想在react编写的单页面应用程序(SPA)中从一个页面导航到另一个页面时显示一个加载器,但我遇到了一个类似的问题,我不知道何时停止显示它,以及新页面中的所有组件是否都已完成其API调用/呈现。

我解决这个问题的方法是:

1)我从组件内部删除了所有的API调用。

2)创建一个Page组件来包装该页面中包含的所有组件(由您的react路由器调用)。

3)在导航时同时执行组件所需的所有请求(在我的示例中,显示加载器时)。对于完成的每个请求,创建一个promise,并在其中使用React.createElement动态创建您的组件。传递给创建了请求响应和promise处理程序的组件作为props。

4)解析组件componentDidMount中的promise。

5)一旦所有的承诺都解决了,你就知道“页面”已经准备好了,你可以记录window.performance.now()的值了。

在没有大量脱离上下文的代码的情况下,很难提供最小的代码示例,因为这些代码分布在整个应用程序中。

票数 1
EN

Stack Overflow用户

发布于 2017-10-06 15:37:50

有不止一种方法可以做到你所要求的--但在我的脑海中,我会这样做:

·在我创建redux存储并将值添加到初始状态之前,创建一个perf reducer并调用performance.now()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ perf: { start: '...', end: '...' } }

·在已加载的reducer中跟踪初始HTTP请求的加载状态。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ loaded: { request1: false, request2: false, request3: false } }

·将顶层组件连接到加载的reducer,并检查componentDidUpdate中的所有请求是否都已完成。如果为真,则将end值添加到perf reducer。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from 'react';
import { connect } from 'react-redux';

class App extends React.Component {
  componentDidUpdate(prevProps) {
    if (!prevProps.loadingComplete && this.props.loadingComplete) {
      this.props.updatePerf(performance.now());
    }
  }
}

const mapStateToProps = state => ({
  loadingComplete: state.loaded.every(item => item),
});

const mapDispatchToProps = dispatch => ({
  updatePerf(time) {
    dispatch({ type: 'SET_ENDING_PERF', payload: time });
  },
});

export default connect(mapStateToProps, mapDispatchToProps)(App);
票数 1
EN

Stack Overflow用户

发布于 2017-10-03 20:07:49

在我们的项目中,我们使用redux和几个动作-触发器,请求,成功,错误。

"Trigger“调用request并抛出loading: true到我们的”智能“组件"Request”中获取数据并将它们抛入成功/错误"Success“中,告诉我们一切正常且数据已加载并抛出{ loading: false,data }

在成功/错误时,我们总是知道应用程序正在发生这种情况

当然,您可以使用componentWillReceiveProps(nextProps) {}并检查组件中的加载标志和数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46413777

复制
相关文章
OkHttp忽略SSL证书验证
自签的SSL证书不受信任,可通过将该证书添加至JDK密钥库,jdk信任自签证书,如果这种方法行不通,可尝试该方式
itze
2022/10/31
3.1K0
JDK信任自签证书
找到cacerts文件所在目录路径,jdk_home(jdk位置路径)/jdk1.8.0_231/jre/lib/security 如果是window系统斜杠是“\”到cacerts文件所在路径位置,Linux就cd到此位置,Windows就cmd到此位置
itze
2022/10/31
1.2K0
JDK信任自签证书
使用mkcert工具生成受信任的本地SSL证书
官方文档:https://github.com/FiloSottile/mkcert#mkcert
宝耶需努力
2022/12/13
4.8K0
使用mkcert工具生成受信任的本地SSL证书
解决iOS 证书不受信任的问题
重新下载AppleWWDRCA并安装。即下载最新的AppleWWDRCA证书,双击安装到“登录”项的钥匙串下;然后再安装你的开发证书或者发布证书就可以了。
特特
2022/03/18
8.3K0
已处理证书链,但是在不受信任提供程序信任的根证书中终止
win7 或以下系统没有 证书管理机构, 用下面方法彻底可以解决 证书不认问题 https://social.technet.microsoft.com/Forums/windowsserve
庞小明
2018/03/09
6.1K0
http请求的方法里怎么设置信任所有ssl证书?(PKIX path building failed)
工作中,有时候需要跨系统调用。这个时候HttpURLConnection,而现在很多网站都是用的是HTTPS。我们知道HTTPS都是有证书的。证书有的是花钱买的,有的没有花钱。这请情况下,有时候,有些https请求,就不是可信任的。
凯哥Java
2019/06/28
2K0
http请求的方法里怎么设置信任所有ssl证书?(PKIX path building failed)
OKHttp使用解析
OKHttp 是一套处理 HTTP 网络请求的依赖库,由 Square 公司设计研发并开源,目前可以在 Java 和 Kotlin 中使用,现在几乎已经占据了所有的网络请求操作。
摸鱼的G
2023/02/22
5140
OkHttp简单使用
OkHttp是一个优秀的网络请求框架,目前主流已经替换httpclient, HttpURLConnection 使用方式;
知识浅谈
2021/10/19
4530
OkHttp使用详解
_当然在开始之前,我们还要先在项目中添加OkHttp的依赖库,至于怎么在AndroidStudio中给项目添加OkHTTP依赖,这里将不再赘述。另外,OkHttp中使用了建造者模式,如果对建造者模式不了解,可以看看这篇博客设计模式之建造者模式_**
做个快乐的码农
2021/12/03
11.8K0
OkHttp使用详解
OkHttp 使用示例
可以用来下载文件,打印header,打印body。string()方法对于小文档的响应来说是个既方便又高效的方法。但是如果一个文档太大(大于1M),就不要使用string()方法了,因为这个方法会把整个文档加载到内存中,在这种情况下可以把body当作流来处理。
代码拾遗
2018/07/24
2.8K0
Tip | OkHttp使用
另外注意OkHttp可以把最后执行的execute()方法换成enqueue(callback), 即调用enqueue()并接收一个框架提供的okhttp3.Callback接口;
凌川江雪
2019/06/11
8020
5大导致"SSL证书不被信任"的原因
前言 今天在这里主要总结一下使用SSL的过程中遇到的坑(注意事项)。SSL是什么东西?(请自行搜索) 我(叫龙君)接触SSL证书已经4年了,算上今年,最开始我认为SSL证书就是拿回来安装上就可以使用的。后来发现其实不然,我们还需要去了解SSL证书信任过程和什么是信任证书链。因为大部分客户都不了解这些,购买了证书后安装使用都会出现”不信任”的问题。下面就是总结常见的5中导致SSL证书不信任的原因。 1.SSL证书不是来自公认的证书颁发机构(CA) 我们但凡了解过SSL证书的朋友都明白,我们自己就可以给自己颁发
小小科
2018/05/03
3.8K0
okhttp的使用介绍
4.2.0:要求 Android 5.0+ (API level 21+) and on Java 8+。
103style
2022/12/19
5230
【OkHttp】OkHttp 源码分析 ( OkHttpClient.Builder 构造器源码分析 )
【OkHttp】OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 ) 【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 ) 【OkHttp】OkHttp 上传图片 ( 获取 SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 )
韩曙亮
2023/03/29
8700
okhttp 使用笔记
okhttp是一个网络请求框架,也是目前市面上使用最多的网络框架之一。 之前参与的项目一直没使用,这次刚好有个机会使用OKHttp,记录下。
艳龙
2021/12/16
5170
0x800b0109 - 已处理证书链,但是在不受信任提供程序信任的根证书中终止。
有时在安装程序时无法安装出现错误,或者在更新某些系统组件时也遇到同样的错误:“已处理证书链,但是在不受信任提供程序信任的根证书中终止。”。
walterlv
2023/10/23
9.2K0
0x800b0109 - 已处理证书链,但是在不受信任提供程序信任的根证书中终止。
移动客户端的证书、策略、信任评估体系
安全体系一直都是公司需要完成基础设施的支撑。安全包括了数据安全、通信安全、操作安全、代码安全等功能。有的组织则提供了一套标准的安全规范和技术标准比如PKI。而操作系统层面则苹果公司通过其提供的Security.framework而android则通过com.java.security框架来提供安全的支撑。
欧阳大哥2013
2018/08/22
8190
OkHttp基础概念解释
最近在整理Android常用第三方框架相关的东西,说道Android的框架,无外乎就是Android开发中常见的网络、图片缓存、数据交互、优化、页面等框架,其中网络作为一个基础部分,我相信大家更多的是使用OkHttp,而在长连接中有Socket和webSocket等,今天给大家总结下OkHttp相关的内容,部分参考网络资源。
xiangzhihong
2020/01/14
2.1K0
OkHttp基础概念解释
点击加载更多

相似问题

具有自动布局功能的自调整大小UICollectionView

121

具有固定间距的UICollectionview自调整大小单元格自动布局

115

UICollectionView单元格自动调整大小

20

UICollectionView自动调整单元格大小

113

使用自动调整大小功能时,UICollectionView单元格不会根据单元格内容调整大小

125
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文