最新国产好看的视频,伊人天堂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后頁面不顯示

**問題描述 **在開發(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)文章

最新評(píng)論

甘泉县| 兴城市| 辰溪县| 军事| 鸡东县| 抚顺市| 宁强县| 买车| 越西县| 武胜县| 蒙山县| 施秉县| 五寨县| 克拉玛依市| 湟源县| 蕲春县| 邹平县| 察隅县| 余江县| 雅安市| 杭州市| 红桥区| 临澧县| 湖北省| 高淳县| 玉溪市| 内黄县| 海城市| 亚东县| 夏津县| 延寿县| 思茅市| 龙江县| 凤山县| 铁岭县| 炎陵县| 玉田县| 天水市| 永泰县| 义乌市| 晋江市|