父子組件生命周期及子組件獲取數(shù)據(jù)傳值問題剖析
一、父子組件的生命周期
1.普通父子組件:
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
2.爺組件Y、父組件F、子組件Z
其中父組件為component(:is="")寫法,
子組件為按需引入寫法
switch(this.pos){ case enums.top: return ()=> import("./top.vue") default: return ()=>import("./default.vue") }
生命周期:
爺beforeCreate-爺created->爺beforeMount->父beforeCreate->父created->父beforeMount->父mounted->爺mounted->子beforeCreate->子created->子beforeMount->子mounted
二、父?jìng)髯觩rops數(shù)據(jù)問題分析
1.異步數(shù)據(jù)問題 在子組件的created和mounted打印不到最新的props
如父組件傳過來的數(shù)據(jù)是created中請(qǐng)求接口獲取的,走到父created遇見請(qǐng)求接口的異步任務(wù),會(huì)將其放到一個(gè)任務(wù)隊(duì)列,繼續(xù)執(zhí)行生命周期(生命周期是同步的)鉤子,執(zhí)行到子組件的created和mounted,還沒開始請(qǐng)求接口當(dāng)然打印不到最新的數(shù)據(jù),只能打印到父組件在data中定義的該數(shù)據(jù)
注意:如果在created中有await語法則await之后的代碼塊同樣的也會(huì)被放入任務(wù)隊(duì)列,先執(zhí)行子組件的生命周期,子掛載后再執(zhí)行父mounted中的同步代碼,等所有同步任務(wù)執(zhí)行完再執(zhí)行await的異步及await之后的代碼塊
2.同步數(shù)據(jù) 父組件在data定義的數(shù)據(jù)或執(zhí)行到子created前父組件生命周期中的同步數(shù)據(jù)
同步數(shù)據(jù)可以在子組件的created中直接打印處理
三、子組件渲染及如何處理父組件的異步數(shù)據(jù)
1.無需在子組件中進(jìn)行處理的數(shù)據(jù)
如父?jìng)鬟f的數(shù)據(jù)無需特別處理,不論該數(shù)據(jù)是同步異步,都可用來展示,因?yàn)関ue是響應(yīng)式的即使異步數(shù)據(jù)等數(shù)據(jù)更新后頁面后自動(dòng)刷新的,不過若為異步數(shù)據(jù)在子的created里打印不到最新的,不過為什莫要打印呢哈哈
2.子對(duì)接受的父數(shù)據(jù)需要處理
同步:可直接在created寫方法進(jìn)行處理
異步:
方案一:watch 監(jiān)聽到傳來的新數(shù)據(jù)時(shí)通過方法進(jìn)行處理
方案二:在父組件添加v-if 如下,請(qǐng)求接口后 給list賦值,通過list的長(zhǎng)度判斷是否展示模塊
這樣就可以確保子組件執(zhí)行created值一定是接口的值然后再進(jìn)行處理,相當(dāng)于把數(shù)據(jù)變成同步的了
topModule(v-if="list.length") data(){ return { list:[] } }
以上就是父子組件生命周期及子組件獲取數(shù)據(jù)問題的詳細(xì)內(nèi)容,更多關(guān)于父子組件生命周期傳值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解windows下vue-cli及webpack 構(gòu)建網(wǎng)站(三)使用組件
本篇文章主要介紹了詳解windows下vue-cli及webpack 構(gòu)建網(wǎng)站(三)使用組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06vue v-for直接循環(huán)數(shù)字實(shí)例
今天小編就為大家分享一篇vue v-for直接循環(huán)數(shù)字實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11vue3中vue.config.js配置Element-plus組件和Icon圖標(biāo)實(shí)現(xiàn)按需自動(dòng)引入實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于vue3中vue.config.js配置Element-plus組件和Icon圖標(biāo)實(shí)現(xiàn)按需自動(dòng)引入的相關(guān)資料,在Vue 3中可以通過配置vue.config.js文件來進(jìn)行按需自動(dòng)引入,需要的朋友可以參考下2024-02-02使用Plotly.js在Vue中創(chuàng)建交互式散點(diǎn)圖的示例代碼
Plotly.js是一個(gè)功能強(qiáng)大的JavaScript庫,用于創(chuàng)建交互式數(shù)據(jù)可視化,它支持各種圖表類型,包括散點(diǎn)圖、折線圖和直方圖,在Vue.js應(yīng)用程序中,Plotly.js可用于創(chuàng)建動(dòng)態(tài)且引人入勝的數(shù)據(jù)可視化,本文介紹了使用Plotly.js在Vue中創(chuàng)建交互式散點(diǎn)圖,需要的朋友可以參考下2024-07-07