最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0中setup中異步轉(zhuǎn)同步的實(shí)現(xiàn)

 更新時(shí)間:2022年06月24日 14:44:56   作者:搬磚工KO水泥匠  
這篇文章主要介紹了vue3.0中setup中異步轉(zhuǎn)同步的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue3 setup中異步轉(zhuǎn)同步

vue3中setup前加上async后頁(yè)面不顯示

**問(wèn)題描述 **在開(kāi)發(fā) vue3 中,因?yàn)橥ㄟ^(guò)接口數(shù)據(jù)為異步函數(shù)獲取,導(dǎo)致最后數(shù)據(jù)無(wú)法成功賦值進(jìn) return 中的數(shù)據(jù)。所以需要setup函數(shù)異步轉(zhuǎn)同步,后設(shè)置了async 后異步轉(zhuǎn)同步,結(jié)果導(dǎo)致頁(yè)面空白不顯示。

解決問(wèn)題 在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í)候得使用一些特定的鉤子來(lái)發(fā)送請(qǐng)求

和vue2一樣,選擇在dom節(jié)點(diǎn)渲染完成的時(shí)候發(fā)送請(qǐng)求,

(getdata為封裝的數(shù)據(jù))

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

頁(yè)面顯示沒(méi)有數(shù)據(jù),但是tableData卻可以顯示數(shù)來(lái)數(shù)據(jù),但是因?yàn)関ue的承諾是相應(yīng)式數(shù)據(jù)發(fā)生改變,頁(yè)面就會(huì)重新渲染,所以是tabledata的響應(yīng)式被替換成了不能響應(yīng)的數(shù)據(jù)

把數(shù)據(jù)壓入原來(lái)的設(shè)置成響應(yīng)式的數(shù)組就可以檢測(cè)到了

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

景东| 自贡市| 墨竹工卡县| 南昌市| 郑州市| 郑州市| 滨海县| 宽甸| 富宁县| 青铜峡市| 南宫市| 同德县| 新竹县| 海盐县| 博兴县| 太白县| 灌阳县| 西丰县| 南华县| 五华县| 印江| 益阳市| 张北县| 蕉岭县| 嘉祥县| 永仁县| 眉山市| 正宁县| 麟游县| 安龙县| 清水河县| 南陵县| 仪征市| 新河县| 蓝田县| 鹤峰县| 罗江县| 洛宁县| 大安市| 凤冈县| 泰兴市|