vue.js 里刚开始数据请求延迟的话会短暂显示那个没数据的画面咋搞哦

2020-11-18 08:54:33 +08:00
 qwertyzzz
有数据
无数据

data{ list:[] }

list 是异步获取的实际有数据的 如何解决刚开始会短暂显示无数据呀

3730 次点击
所在节点    程序员
26 条回复
emeab
2020-11-18 08:55:38 +08:00
加 loading
qwertyzzz
2020-11-18 08:56:50 +08:00
@emeab 获取的时候先加 loading 吗
imherer
2020-11-18 09:00:44 +08:00
对的,按 1L 说的加 loading 不就好了

而且这种操作本来就应该加 loading,万一你获取数据花费时间较长怎么办? loading 是良策
vivipure
2020-11-18 09:04:53 +08:00
loading, 骨架屏,v-cloak
qwertyzzz
2020-11-18 09:07:56 +08:00
好的好的 谢谢各位大佬
LyleRockkk
2020-11-18 09:08:29 +08:00
告诉用户当前正在加载数据就好了,可先显示默认无数据状态图片或者加 loading 告知正在加载
RickyC
2020-11-18 09:16:25 +08:00
让显示数据的那里 display:none;

得到数据后, 在回调里去掉 display:none; 这个属性
1277840534
2020-11-18 09:17:01 +08:00
如果不考虑布局结构突然变化的话也可以用用 v-if
TimPeake
2020-11-18 09:19:05 +08:00
这个跟 Vue 没啥关系吧 换个框架你也会这么问
AreYou0k
2020-11-18 09:22:15 +08:00
beforeCreate
ragnaroks
2020-11-18 09:22:42 +08:00
<loading v-if="isLoading" />
<data-panel v-else />
BluesQu
2020-11-18 09:23:55 +08:00
v-cloak
zhuangzhuang1988
2020-11-18 09:31:02 +08:00
https://github.com/posva/vue-promised/blob/master/src/index.js
看下源码
组合出 3 个状态就好了
NBUG
2020-11-18 10:04:00 +08:00
这问题无关框架啊
JayLin1011
2020-11-18 10:16:06 +08:00
vue@2 的方案:
1. 动态组件;
2. 条件渲染;
3. 异步组件;
vue@3 的方案:suspense 。
具体情况可根据具体需求灵活选择。
chaselen
2020-11-18 11:29:04 +08:00
<empty v-if="list && !list.length" />
<data v-if="list && list.length" />

data { list: null }
353943780
2020-11-18 11:42:40 +08:00
自己要设置 requestStatus 记录请求前中后的状态,不同的状态,显示不一样的 ui dom 。

直接判断 list 为空也不合适,有可能数据真的为空,就要显示数据空状态的 ui 。
cszchen
2020-11-18 11:56:53 +08:00
@RickyC 用 v-if 可能比操作 dom 修改 css 更合适
cszchen
2020-11-18 11:57:51 +08:00
看用的框架有没有骨架,没有的话用 loading
CODEWEA
2020-11-18 12:10:27 +08:00
placeholder

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/726489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX