数据加载等待 elementUI + vue

数据在加载过程中页面显示空白会让用户感到焦虑烦躁,加一点小动态可以解决这种问题。
在这里插入图片描述
在这里插入图片描述
v-if控制页面三种状态:1、加载中;2、加载无数据;3、展示数据
isloading true加载icon显示, false隐藏,初始true
hasdata true无数据icon显示,false隐藏,初始false

isloading:true
数据初始
数据请求成功,Dom加载完成
isloading:false
有数据长度hasdata:true
没数据长度hasdata:false
结束/页面数据展示

其实我就是想玩一下甘特图

### 提高ElementUI `el-dialog` 组件加载速度的方法 为了优化 `el-dialog` 的性能,可以采取多种策略来减少不必要的资源消耗并加快响应时间。 #### 1. 按需引入组件 仅导入实际使用的 ElementUI 组件而非整个库能够显著减小打包后的文件大小。这不仅减少了网络传输的数据量,还降低了浏览器解析和执行 JavaScript 的负担[^1]。 ```javascript // main.js 或入口文件中按需引入所需组件 import { Button, Dialog } from 'element-ui'; Vue.use(Button); Vue.use(Dialog); // 替代方案:使用 babel-plugin-component 自动化处理 ``` #### 2. 使用懒加载技术 对于不经常展示的内容(如模态框),可以通过动态 import 实现懒加载,在首次访问时才下载相应模块。这样可使初次页面加载更快[^4]。 ```javascript <template> <div> <!-- 动态加载对话框 --> <button @click="showDialog">Show Lazy Loaded Dialog</button> <component v-if="isLoaded" :is="lazyComponent"></component> </div> </template> <script> export default { data() { return { isLoaded: false, lazyComponent: null }; }, methods: { async showDialog() { this.lazyComponent = await import('@/components/MyLazyDialog.vue'); this.isLoaded = true; } } }; </script> ``` #### 3. 防止重复初始化DOM结构 由于 `el-dialog` 默认采用 `display:none/block` 来切换可见状态而不销毁内部 DOM 节点,因此当包含复杂逻辑或依赖于生命周期钩子的子组件时可能会遇到问题。为了避免这种情况下的潜在性能瓶颈,可以在每次关闭前手动移除实例或者利用 keep-alive 缓存机制[^3]。 ```html <!-- 添加 destroy-on-close 属性确保关闭时彻底清除 --> <el-dialog ... destroy-on-close> ... </el-dialog> ``` #### 4. 延迟表单验证及其他耗时操作 针对某些场景下首次打开 `el-dialog` 后立即读取其内嵌元素失败的情况,建议推迟这些敏感动作直到视图更新完成后再执行。例如,借助 `$nextTick()` 方法等待下一帧再进行下一步操作;也可以考虑将异步数据获取放在合适的位置以避开同步流程中的干扰因素。 ```javascript methods: { handleOpen() { this.$nextTick(() => { if (this.$refs.form) { this.$refs.form.resetFields(); } }); } } ``` 通过上述措施综合应用,应该能够在很大程度上改善基于 ElementUI 构建的应用程序中涉及 `el-dialog` 场景的整体表现效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值