使用vue3中的异步

在Vue3中遇到使用ajax请求数据时,由于setup前不支持async,导致返回值变为Promise。解决办法是在DOM渲染完成后发送请求,如在onMounted钩子中。然而,数据虽能正常获取,但响应式被破坏,页面未更新。将数据压入原有的响应式数组可解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在vue3中使用ajax请求数据的时候,由于不能在setup前面使用async,使用后会导致return的返回值全部变成promise的返回值,所以在执行的时候得使用一些特定的钩子来发送请求

和vue2一样,选择在dom节点渲染完成的时候发送请求,

(getdata为封装的数据)

这样写完之后会发现

 

页面显示没有数据,但是tableData却可以显示数来数据,但是因为vue的承诺是相应式数据发生改变,页面就会重新渲染,所以是tabledata的响应式被替换成了不能响应的数据

把数据压入原来的设置成响应式的数组就可以检测到了

 

 

 

### 使用 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、付费专栏及课程。

余额充值