vue3.0中setup中異步轉(zhuǎn)同步的實(shí)現(xiàn)
vue3 setup中異步轉(zhuǎn)同步
vue3中setup前加上async后頁面不顯示
**問題描述 **在開發(fā) vue3 中,因?yàn)橥ㄟ^接口數(shù)據(jù)為異步函數(shù)獲取,導(dǎo)致最后數(shù)據(jù)無法成功賦值進(jìn) return 中的數(shù)據(jù)。所以需要setup函數(shù)異步轉(zhuǎn)同步,后設(shè)置了async 后異步轉(zhuǎn)同步,結(jié)果導(dǎo)致頁面空白不顯示。
解決問題 在Vue3中,如果當(dāng)前組件的setup使用了async/await,那么其調(diào)用組件的父組件的外層需要嵌套一個(gè)suspense標(biāo)簽,例如:
異步組件:
子組件
HTML
<template> ? ? <div>······</div> </template>
JS
export default {
? ? async setup () {
? ? ? ? let ···
? ? ? ? // 接口A
? ? ? ? await getAAA().then(() => {
? ? ? ? ? ? ···
? ? ? ? }).catch(() => {
? ? ? ? ? ? ···
? ? ? ? })
? ? ? ? // 接口B
? ? ? ? await getBBB().then(() => {
? ? ? ? ? ? ···
? ? ? ? }).catch(() => {
? ? ? ? ? ? ···
? ? ? ? })
? ? ? ? return {
? ? ? ? ? ? ···
? ? ? ? }
? ? }
}父組件中需要單獨(dú)設(shè)置
<suspense> ? ? <async-component/> </suspense>
使用vue3中的異步
在vue3中使用ajax請(qǐng)求數(shù)據(jù)的時(shí)候,由于不能在setup前面使用async,使用后會(huì)導(dǎo)致return的返回值全部變成promise的返回值,所以在執(zhí)行的時(shí)候得使用一些特定的鉤子來發(fā)送請(qǐng)求
和vue2一樣,選擇在dom節(jié)點(diǎn)渲染完成的時(shí)候發(fā)送請(qǐng)求,
(getdata為封裝的數(shù)據(jù))
![]()

這樣寫完之后會(huì)發(fā)現(xiàn)


頁面顯示沒有數(shù)據(jù),但是tableData卻可以顯示數(shù)來數(shù)據(jù),但是因?yàn)関ue的承諾是相應(yīng)式數(shù)據(jù)發(fā)生改變,頁面就會(huì)重新渲染,所以是tabledata的響應(yīng)式被替換成了不能響應(yīng)的數(shù)據(jù)
把數(shù)據(jù)壓入原來的設(shè)置成響應(yīng)式的數(shù)組就可以檢測(cè)到了


以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法
NProgress.js是輕量級(jí)的進(jìn)度條組件,使用簡(jiǎn)便,可以很方便集成到單頁面應(yīng)用中。這篇文章主要介紹了在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法,需要的朋友可以參考下2018-01-01
vue輸入框使用模糊搜索功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue輸入框使用模糊搜索功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Vue 實(shí)現(xiàn)顯示/隱藏層的思路(加全局點(diǎn)擊事件)
這篇文章主要介紹了Vue 實(shí)現(xiàn)顯示/隱藏層的思路(加全局點(diǎn)擊事件),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
vue實(shí)現(xiàn)PC端錄音功能的實(shí)例代碼
這篇文章主要介紹了vue實(shí)現(xiàn)PC端錄音功能的實(shí)例代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
Element Table 自適應(yīng)高度的實(shí)現(xiàn)示例
el-table的高度不能適應(yīng)不同電腦的分辨率,也不能跟隨瀏覽器的高度變化而變化的問題,本文就來解決一下Element Table 自適應(yīng)高度,感興趣的可以了解一下2024-07-07
vue3項(xiàng)目+element-plus:時(shí)間選擇器格式化方式
這篇文章主要介紹了vue3項(xiàng)目+element-plus:時(shí)間選擇器格式化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
使用WebStorm開發(fā)Vue3項(xiàng)目及其他問題詳解
這篇文章主要介紹了在WebStorm中配置Vu3項(xiàng)目的詳細(xì)步驟,還解決了ElementPlus與Sass版本兼容性問題,并提供了詳細(xì)的配置和運(yùn)行步驟,需要的朋友可以參考下2025-02-02

