vue父組件異步獲取數(shù)據(jù)傳給子組件的方法
但是現(xiàn)在問題是父組件的數(shù)據(jù)是異步獲取的,而子組件一開始就會(huì)渲染,如果此時(shí)沒有傳入數(shù)據(jù),而子組件又要用到數(shù)據(jù)中的length屬性時(shí)就會(huì)報(bào)錯(cuò):
怎么辦呢?最簡單的辦法就是讓子組件條件渲染,當(dāng)有數(shù)據(jù)的時(shí)候才渲染,這樣就不會(huì)拋出錯(cuò)誤了。
但是這還不夠完美,子組件一般不直接使用父組件傳來的值,二是監(jiān)聽一下,然后有變化了的時(shí)候再賦值給data,渲染的時(shí)候用data里的數(shù)據(jù),這樣就能保證隨時(shí)動(dòng)態(tài)更新數(shù)據(jù)
props: ['floorGoods'], data() { return{ flGoods: {} } }, watch: { floorGoods(val) { this.flGoods = val; console.log(val); } }
在一個(gè)方法就是在父組件里用Promise方法異步執(zhí)行數(shù)據(jù)的賦值:
new Promise((resolve,reject) => { if (res.status === 200){ resolve(res); } }).then((res) => { this.category = res.data.data.category; this.adBar = res.data.data.advertesPicture.PICTURE_ADDRESS; this.bannerSwipePics = res.data.data.slides; this.recommendGoods = res.data.data.recommend; // 也可異步獲取再傳給子組件 Promise this.floorSeafood = res.data.data.floor1; this.floorBeverage = res.data.data.floor2; this.floorFruits = res.data.data.floor3; console.log(this.floorFruits); this._initScroll(); }) }).catch(err => { console.log(err); });
這樣也是可以的,異步獲取數(shù)據(jù)導(dǎo)致的報(bào)錯(cuò)的情況會(huì)在各個(gè)場景出現(xiàn),比如根據(jù)數(shù)據(jù)渲染dom,而對(duì)dom有js操作的時(shí)候,會(huì)因?yàn)檫€沒渲染出來而找不到響應(yīng)的dom元素報(bào)錯(cuò),這里可以用vue提供的$nextTick()函數(shù),或者手動(dòng)開個(gè)setTimeout定時(shí)器,延遲獲?。皇褂胋etter-scroll的時(shí)候因?yàn)閐om沒有渲染出來而無法獲取滾動(dòng)元素的高度,導(dǎo)致無法滾動(dòng),同樣可以用vue提供的這個(gè)函數(shù),等dom渲染完了后再初始化滾動(dòng)。
總結(jié)
以上所述是小編給大家介紹的vue父組件異步獲取數(shù)據(jù)傳給子組件的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- vue父組件中獲取子組件中的數(shù)據(jù)(實(shí)例講解)
- 詳解VUE里子組件如何獲取父組件動(dòng)態(tài)變化的值
- Vue父組件如何獲取子組件中的變量
- vue 父組件通過$refs獲取子組件的值和方法詳解
- vue.js 子組件無法獲取父組件store值的解決方式
- vue實(shí)現(xiàn)父組件獲取子組件的方法或?qū)傩灾翟斀?/a>
- vue子組件如何獲取父組件的內(nèi)容(props屬性)
- vue中實(shí)現(xiàn)子組件接收父組件方法并獲取返回值
- vue子組件獲取到它父組件數(shù)據(jù)的4種方法
- VUE父組件異步獲取數(shù)據(jù),子組件接收的值為空的問題
- vue父組件異步如何獲取數(shù)據(jù)傳給子組件
- vue3父組件使用ref獲取子組件的屬性和方法
- vue子組件實(shí)時(shí)獲取父組件的數(shù)據(jù)實(shí)現(xiàn)
相關(guān)文章
vue3+arco design通過動(dòng)態(tài)表單方式實(shí)現(xiàn)自定義篩選功能
這篇文章主要介紹了vue3+arco design通過動(dòng)態(tài)表單方式實(shí)現(xiàn)自定義篩選,本文主要實(shí)現(xiàn)通過動(dòng)態(tài)表單的方式實(shí)現(xiàn)自定義篩選的功能,用戶可以自己添加篩選的項(xiàng)目,篩選條件及篩選內(nèi)容,需要的朋友可以參考下2024-05-05vuex通過getters訪問數(shù)據(jù)為undefined問題及解決
這篇文章主要介紹了vuex通過getters訪問數(shù)據(jù)為undefined問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08Vue3實(shí)現(xiàn)自定義Input組件的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何使用Vue3自定義實(shí)現(xiàn)一個(gè)類似el-input的組件,可以v-model雙向綁定,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03mui-player自定義底部導(dǎo)航在vue項(xiàng)目中顯示不出來的解決
這篇文章主要介紹了mui-player自定義底部導(dǎo)航在vue項(xiàng)目中顯示不出來的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12vue為什么v-for的優(yōu)先級(jí)比v-if高原理解析
這篇文章主要為大家介紹了vue為什么v-for的優(yōu)先級(jí)比v-if高原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05Ant Design Vue pro 動(dòng)態(tài)路由的實(shí)現(xiàn)和打包方式
這篇文章主要介紹了Ant Design Vue pro 動(dòng)態(tài)路由的實(shí)現(xiàn)和打包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06使用webstorm配置vue+element開發(fā)環(huán)境
這篇文章主要介紹了使用webstorm配置vue+element開發(fā)環(huán)境,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue3子組件watch無法監(jiān)聽父組件傳遞的屬性值的解決方法
這篇文章主要介紹了Vue3子組件watch無法監(jiān)聽父組件傳遞的屬性值的解決方法,文中通過代碼示例講解的講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-10-10