Vue組件傳值異步問題子組件拿到數(shù)據(jù)較慢解決
問題出現(xiàn)
之前寫靜態(tài)頁面的時候,直接父向子傳值,是指節(jié)能渲染出父組件給子組件的值,但是加上請求后,就會出現(xiàn)請求過慢。就是在組件創(chuàng)建和渲染完畢時,子組件的值才拿到,子組件并沒有實時更新模版(災(zāi)難始終慢我一步)
原因分析
子組件中的 created 、mounted 只執(zhí)行一次,在富組件初始化時,已經(jīng)給子組件傳了一個空值,導(dǎo)致異步請求數(shù)據(jù)發(fā)生變化時,子組件的值不再變化
在父組件中,獲取數(shù)據(jù)時會有幾秒鐘的時間延遲,而異步請求不會阻塞后續(xù)代碼,所以導(dǎo)致子組件通過props接受數(shù)據(jù)時拿到的是空數(shù)據(jù),通過打印結(jié)果顯示先執(zhí)行子組件中props中的代碼,導(dǎo)致數(shù)據(jù)無法渲染。
解決辦法
就是沒有發(fā)請求拿到數(shù)據(jù)之前,不讓他創(chuàng)建子組件并傳值,因此給其加 v-if 指令來限制他是否能創(chuàng)建子組件,類似于節(jié)流的思想。
在父組件中的子組件,通過v-if判斷接口請求的數(shù)據(jù)是否不為0或者不為空,因為v-if是通過創(chuàng)建DOM顯示的,此時通過判斷如果子組件有數(shù)據(jù)的話才傳數(shù)據(jù)
data 數(shù)據(jù)里面
list : false || null
請求方法里
async getUserinfo() { const { data : res } = await getUserinfo(userid:this.userid) this.list = res.data }
模版子組件處
<Userinfo :list = 'list' v-if = 'list'/> <Userinfo :list = 'list' v-if = 'list && list.length > 0'/>
以上就是Vue組件傳值異步問題--子組件拿到數(shù)據(jù)較慢的詳細(xì)內(nèi)容,更多關(guān)于Vue組件傳值異步問題的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue.js3.2的vnode部分優(yōu)化升級使用示例詳解
這篇文章主要為大家介紹了Vue.js3.2的vnode部分優(yōu)化升級使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07詳解vue-cli 快速搭建單頁應(yīng)用之遇到的問題及解決辦法
這篇文章主要介紹了詳解vue-cli 快速搭建單頁應(yīng)用之遇到的問題及解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03vue3中使用props和emits并指定其類型與默認(rèn)值
props是Vue3中的一個重要概念,它允許我們將數(shù)據(jù)從父組件傳遞到子組件,下面這篇文章主要給大家介紹了關(guān)于vue3中使用props和emits并指定其類型與默認(rèn)值的相關(guān)資料,需要的朋友可以參考下2023-04-04vue-cli 2.*中導(dǎo)入公共less文件的方法步驟
這篇文章主要介紹了vue-cli 2.*中導(dǎo)入公共less文件的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11解決vue項目中某一頁面不想引用公共組件app.vue的問題
這篇文章主要介紹了解決vue項目中某一頁面不想引用公共組件app.vue的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08