首页 > 其他分享 >记录--Loading 用户体验 - 加载时避免闪烁

记录--Loading 用户体验 - 加载时避免闪烁

时间:2023-08-12 18:23:11浏览次数:39  
标签:Loading showLoadingIndicator -- loadingDone pipe subscribe result id 加载

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

在切换详情页中有这么一个场景,点击上一条,会显示上一条的详情页,同理,点击下一条,会显示下一条的详情页。

伪代码如下所示:

我们定义了一个 switcher 模版, 用户点击上一条、下一条时调用 goToPreOrNext 方法。该页面通过 loadingDone 状态判断是否展示加载效果。

// html
<thy-loading [thyDone]="loadingDone"></thy-loading>
<ng-container *ngIf="loadingDone">
	<styx-pivot-detail>
		...
		<thy-arrow-switcher
			...
		  (thyPrevious)="goToPreOrNext($event)"
		  (thyNext)="goToPreOrNext($event)"
		></thy-arrow-switcher>
	...
	</styx-pivot-detail>
</ng-container>

在 goToPreOrNext 方法中,当调用该方法时,通过 goToPreOrNextResolve 接口返回下一条的详情 id,通过该 id 请求详情数据。

// 请求下一条 id
fetchPreOrNext(event: ThyArrowSwitcherEvent) {
	...
	this.goToPreOrNextResolve(event.index, topicId).subscribe(
		(id: string) => {
			this.getDetail(id);
		}
		...
	)
}

// 请求详情数据
getDetail(postId: string) {
	this.loadingDone = false;
	this.store
      .fetchPost(postId)
      .pipe(
          finalize(() => {
              this.loadingDone = true;
          })
      )
      .subscribe();
}

这看起来好像没有什么问题,应该一般都是这么干的,我们运行看看。

标签:Loading,showLoadingIndicator,--,loadingDone,pipe,subscribe,result,id,加载
From: https://www.cnblogs.com/smileZAZ/p/17625210.html

相关文章

  • SV 第五章 面向对象编程基础
    SystemVerilog验证5面向对象编程基础5.1概述对于Verilog和C语言来说,由于他们不是面向对象变成语言,数据的存储往往是分布式的,例如把数据、地址、指令分别保存在不同的数组里面,不利于程序的解读。面向对象变成使得用户可以创建复杂的数据类型,将数据类型紧密地结合在一起,可以在......
  • gitlab--services、environment、inherit
    servicesservices 关键字定义了一个Docker镜像,该镜像在链接到image关键字定义的Docker镜像的 job 期间运行。这允许您在构建期间访问服务镜像。服务镜像可以运行任何应用程序,但最常见的用例是运行数据库容器,例如:MySQLPostgreSQLRedis例如,每次构建项目时,使用现有......
  • Java BigDecimal 分析
    1.使用理由:Double类和Float类可以对16位有效数字的数进行精确运算,但对于超过16位有效数字的数,会丢失精度。所以使用BigDecimal类来精确计算超过16位有效数字的数。2.引入包:importjava.math.BigDecimal;3.构造方法:BigDecimal(E):创建一个具有参数所指定类型的对象使用样......
  • Mybatis如何添加映射接口和映射文件?
    Mybatis是一种半ORM框架,需要我们手动编写SQL语句。在启动时,它会将SQL语句等信息读取到内存中,便于操作数据库时进行参数解析、执行SQL和结果封装。使用过Mybatis的都知道,它有两种方式编写SQL语句:xml映射文件映射接口方法上的注解在启动Mybatis时,可以通过Configuration的addM......
  • 某公司笔试题 - 字符串反转(附python代码)
    #接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)importrestr1=input("请输入一个只有小写字母的字符串:")#通过正则表达式只匹配输入字符串中的小写字母str2=re.sub('[^a-z]','',str1)print(str2)iflen(str2)>0andlen(str2)......
  • 链表和数组的区别
    链表和数组的区别链表逻辑上相邻的元素在物理位置上不一定相邻。优点:插入、删除效率高,不需要一个连续的很大的内存缺点:查找某一个位置的元素效率低。数组优点:存取速度快缺点:1.整块连续空间,占很大内存。2.插入或删除数据效率低、不方便链表数组逻辑上相......
  • python - 将数据附加到 Pandas 全局数据框变量不会持久
    https://www.coder.work/article/5047954我正在尝试使用pandasdataframe全局变量。但是,当我尝试将数据框重新分配或附加到全局变量时,数据框是空的。任何帮助表示赞赏。importpandasaspddf=pd.DataFrame()defmy_func():globaldfd=pd.DataFrame()fo......
  • VMware中的虚拟机Debian10的服务器配置,使主机(win10)能够通过本地域名(如www.xxx.com)
    VMware中的虚拟机Debian10的服务器配置,使主机(win10)能够通过本地域名(如www.xxx.com)访问该服务器安装过程下载debian-10.13.0-amd64-DVD-1.iso(可选下载链接:Indexof/cdimage/archive(debian.org))在VMware中安装虚拟机这里点击浏览,选择下载好的镜像文件,然后......
  • 【LGR-149-Div.3】洛谷基础赛 #2 & qw Round -1
    T1签到。T2送分题。T3大模拟,但是TLE两个点。#include<bits/stdc++.h>#definelllonglong#defineintlonglong#definereregisterusingnamespacestd;constintN=1e5+5,INF=0x3f3f3f3f;intn;queue<string>Q;map<string,int>zt;//0不在;1排队;2游玩;......
  • 注解和反射
    注解和反射1、注解什么是注解?类似@Override注解,注解可以被其他程序所读取,进行信息处理1.1内置注解就是jdk自带的注解如@Override:定义在java.lang.Override中,只适用于修辞方法,表示当前被修辞的方法用于从写父类中的另一个方法​ @Deprecaed:该注解的作用是修辞方法,属性,类,告诉......