在vue3中如何优雅的管理loading状态

时隔多日,我又来了。近期工作实在是太忙了,基本处于天天加班的状态,整个人都麻木了,导致最近一直没有更新什么东西,感觉都快荒废了。还好,这两天处于下个项目开发前,当前项目已提测,好歹能有一点时间来学点东西,写点东西。

好了,废话不多说,本次是给大家分享一下我这两天写的一个插件。本来是写了一个公共方法自己用来着,想着近期在网上没看到好的方法,索性做成插件,分享出来,也让各位大佬们看看还有没有改进的地方。

直接先上链接vite-plugin-auto-loading

接下来,就说说我为什么要写这个插件,以及这个插件的基本用法

一、当前已有插件的问题

其实,目前对于loading的状态管理已经有很多的处理方案了,简单列举一下

1、请求拦截

也就是在请求接口的时候进行统一封装,发出请求展示loading,请求结束关闭loading。

弊端:公共loading,没法单独配置到各个按钮以及操作上面,同时多个请求的时候不做特殊处理的话loading会闪现

2、公共方法封装

封装一个公共的方法,让后在写具体方法的时候给包一层,方法具体咋写这里就不列举了,给大家看看具体实现

// 原
const fun1 = ()=>{
   
   ..........}

// 改
const fun2 = ()=>{
   
   
    loadingFun(fun1())
}
const fun1 = ()=>{
   
   ...
### 使用 Vue 3 实现异步组件并添加加载状态Vue 3 中,`Suspense` 组件用于包裹异步组件,并提供一种优雅的方式来处理加载状态。当内部的异步依赖未解析时,会渲染 `fallback` 属性指定的内容作为占位符。 #### 定义异步组件 通过定义一个返回 Promise 的函数来创建异步组件: ```javascript const AsyncComponent = defineAsyncComponent(() => import(&#39;./components/MyComponent.vue&#39;)) ``` 此方法允许延迟加载组件直到实际需要它们为止[^1]。 #### 结合 Suspense 和 Loading 状态 为了展示加载过程中的反馈给用户,在模板中使用 `<suspense>` 标签,并设置其 `#default` 插槽为正常情况下应呈现的内容以及 `#fallback` 插槽为正在加载期间显示的信息或动画。 ```html <template> <suspense> <!-- 加载完成后的视图 --> <template #default> <async-component /> </template> <!-- 正处于加载状态下的视图 --> <template #fallback> <div>Loading...</div> <!-- 可替换为更复杂的加载指示器 --> </template> </suspense> </template> <script setup> import { defineAsyncComponent } from &#39;vue&#39; // 动态导入组件 const AsyncComponent = defineAsyncComponent(() => import(&#39;@/path/to/component&#39;) ) </script> ``` 上述代码展示了如何利用 `defineAsyncComponent()` 函数配合动态 `import()` 来声明按需加载的组件实例;同时借助于 `<suspense>` 元素实现了简单的加载提示逻辑[^2]。 此外,采用这种方式不仅可以改善应用启动速度,还能显著提升整体性能体验,因为只有真正被访问到的部分才会被执行编译和挂载操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值