javascript - vue渲染子組件異步問(wèn)題
問(wèn)題描述
現(xiàn)在有一個(gè)組件A。里面包含了組件B,C,D,由于涉及了數(shù)據(jù)共享,組件B需要用x參數(shù)發(fā)請(qǐng)求,但是x參數(shù)是在A里面發(fā)請(qǐng)求獲取到的,現(xiàn)在出現(xiàn)的問(wèn)題是在A還沒(méi)獲取到參數(shù)x的時(shí)候B就已經(jīng)先一步發(fā)請(qǐng)求了(結(jié)果請(qǐng)求400錯(cuò)誤),出現(xiàn)問(wèn)題的根本問(wèn)題是父組件與子組件的渲染都是異步進(jìn)行的,在父組件獲取參數(shù)時(shí)用了async+await。
async beforeMount(){ let x = await this.getCityInfo(); this.GET_POSITION(x); console.log(11);},
現(xiàn)在目前能想到的方案就將B,C,D全部整合到A內(nèi)部,使A內(nèi)部沒(méi)有子組件,這樣就不會(huì)有組件之間異步渲染的問(wèn)題,請(qǐng)問(wèn)還有其他更好的方案嗎?
問(wèn)題解答
回答1:獲取 x 成功之前不渲染 B
<B v-if='x'></B>
或者 B 自己 watch prop x ,值不對(duì)不發(fā)請(qǐng)求。
watch: { x (value) { if (value) { // send request } }}回答2:
A請(qǐng)求完了emit一個(gè)事件 B去監(jiān)聽(tīng)就是了
相關(guān)文章:
1. angular.js - $stateChangeSuccess事件在狀態(tài)跳轉(zhuǎn)的時(shí)候不執(zhí)行?2. 如何解決docker宿主機(jī)無(wú)法訪問(wèn)容器中的服務(wù)?3. python - Scrapy存在內(nèi)存泄漏的問(wèn)題。4. java - 三位二進(jìn)制表示8進(jìn)制,四位二進(jìn)制表示16進(jìn)制,那么多少二進(jìn)制表示10進(jìn)制呢?5. 如何用筆記本上的apache做微信開(kāi)發(fā)的服務(wù)器6. javascript - 螞蟻金服里的react Modal方法,是怎么把元素插入到頁(yè)面最后的7. CSS3 畫如下圖形8. android - rxjava merge 返回Object對(duì)象數(shù)據(jù)如何緩存9. java如何生成token?10. angular.js - ionic2 瀏覽器跨域問(wèn)題
