在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ vue怎么保證在渲染之前就拿到數(shù)據(jù),相當(dāng)于阻塞生命周期?

vue怎么保證在渲染之前就拿到數(shù)據(jù),相當(dāng)于阻塞生命周期?

異步請(qǐng)求數(shù)據(jù),但是生命周期函數(shù)也是異步的,怎么才能保證渲染之前就能拿到數(shù)據(jù)呢?

回答
編輯回答
不將就

ajax是異步操作,vue不能保證在渲染之前拿到數(shù)據(jù),vue能做的是初始化頁(yè)面隱藏(visibility:hidden),拿到數(shù)據(jù)再顯示。

2017年5月7日 03:48
編輯回答
淡墨

你的要求可以這樣理解?
我在 beforeCreate 里請(qǐng)求一個(gè)API,之后就不希望 VUE 繼續(xù),直到數(shù)據(jù)回來(lái)后再執(zhí)行 VUE 的生命周期?
如果是這樣的,那辦不到。

簡(jiǎn)單的變通方法,可以使用樓上的 v-if 思路。

另外,也是官方可以做到的,可以這樣。
在路由跳轉(zhuǎn)到此之前請(qǐng)求數(shù)據(jù),請(qǐng)求到執(zhí)行 next() 操作后,再開(kāi)始執(zhí)行 VUE 的生命周期。
資料:在導(dǎo)航完成前獲取數(shù)據(jù)

2017年9月27日 11:49
編輯回答
陌離殤

把請(qǐng)求數(shù)據(jù)變成同步

2017年6月25日 01:25
編輯回答
別傷我

樓上正解,由于異步操作的存在,vue是不能保證在頁(yè)面渲染之前就拿到數(shù)據(jù)的,所以一般的做法是,隱藏頁(yè)面,在created或者beforeCreate的時(shí)候調(diào)用接口獲取數(shù)據(jù),在成功拿到數(shù)據(jù)之后的回調(diào)函數(shù)里面,控制頁(yè)面顯示,這樣可以最大程度上避免頁(yè)面跳動(dòng)的問(wèn)題

2017年7月8日 09:06
編輯回答
凹凸曼

渲染之前的話,created,beforeCreate就開(kāi)始調(diào)接口,然后頁(yè)面剛進(jìn)來(lái)就弄為空,有返回之后再顯示相應(yīng)的部分。這樣渲染和請(qǐng)求是異步的,等到請(qǐng)求回來(lái)之后再把頁(yè)面放出來(lái)(v-if)。

2018年5月17日 06:41
編輯回答
我不懂

這種應(yīng)該用路由的鉤子

beforeRouterEnter(to,from,next) {
    doAjax.then(res => {
        // 獲取數(shù)據(jù)
        next(vm => {
            // 對(duì)數(shù)據(jù)進(jìn)行操作
        })
    })
}
2017年5月17日 00:17
編輯回答
慢半拍

這種問(wèn)題的解決思路不是應(yīng)該加一個(gè)loading嗎。。。在異步獲取數(shù)據(jù)的時(shí)候加上一個(gè)loading表示現(xiàn)在在獲取數(shù)據(jù),然后再獲取數(shù)據(jù)之后再進(jìn)行重新的渲染

2017年9月9日 14:32
編輯回答
墨小白

阻塞不行吧,可以添加loadding 一個(gè)是不至于頁(yè)面空白,另一個(gè)也是不至于數(shù)據(jù)再加載頁(yè)面跳動(dòng)

2018年4月25日 17:47