中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在vue父組件中異步獲取數據傳給子組件

發布時間:2021-05-21 16:42:21 來源:億速云 閱讀:394 作者:Leah 欄目:web開發

這期內容當中小編將會給大家帶來有關怎么在vue父組件中異步獲取數據傳給子組件,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

但是現在問題是父組件的數據是異步獲取的,而子組件一開始就會渲染,如果此時沒有傳入數據,而子組件又要用到數據中的length屬性時就會報錯:

怎么在vue父組件中異步獲取數據傳給子組件

怎么辦呢?最簡單的辦法就是讓子組件條件渲染,當有數據的時候才渲染,這樣就不會拋出錯誤了。

怎么在vue父組件中異步獲取數據傳給子組件

但是這還不夠完美,子組件一般不直接使用父組件傳來的值,二是監聽一下,然后有變化了的時候再賦值給data,渲染的時候用data里的數據,這樣就能保證隨時動態更新數據 

props: ['floorGoods'],
data() {
return{
flGoods: {}
}
},
watch: {
floorGoods(val) {
this.flGoods = val;
console.log(val);
}
}

在一個方法就是在父組件里用Promise方法異步執行數據的賦值:

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);
});

這樣也是可以的,異步獲取數據導致的報錯的情況會在各個場景出現,比如根據數據渲染dom,而對dom有js操作的時候,會因為還沒渲染出來而找不到響應的dom元素報錯,這里可以用vue提供的$nextTick()函數,或者手動開個setTimeout定時器,延遲獲取;使用better-scroll的時候因為dom沒有渲染出來而無法獲取滾動元素的高度,導致無法滾動,同樣可以用vue提供的這個函數,等dom渲染完了后再初始化滾動。

Vue的優點

Vue具體輕量級框架、簡單易學、雙向數據綁定、組件化、數據和結構的分離、虛擬DOM、運行速度快等優勢,Vue中頁面使用的是局部刷新,不用每次跳轉頁面都要請求所有數據和dom,可以大大提升訪問速度和用戶體驗。

上述就是小編為大家分享的怎么在vue父組件中異步獲取數據傳給子組件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

蛟河市| 读书| 东阳市| 福清市| 商都县| 娄烦县| 赣榆县| 青神县| 永顺县| 普兰店市| 葵青区| 岳阳市| 屏边| 安徽省| 安塞县| 鄂托克前旗| 红原县| 库尔勒市| 万安县| 彭州市| 鄯善县| 扶风县| 长白| 南涧| 崇信县| 思茅市| 中江县| 新密市| 栾川县| 讷河市| 固阳县| 韩城市| 屏山县| 山东省| 灵石县| 房产| 峨眉山市| 江北区| 无为县| 元阳县| 新巴尔虎右旗|