国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue父子組件生命周期執(zhí)行順序是什么?

這篇具有很好參考價值的文章主要介紹了Vue父子組件生命周期執(zhí)行順序是什么?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

執(zhí)行順序:父組件先創(chuàng)建,然后子組件創(chuàng)建;子組件先掛載,然后父組件掛載,即“父beforeCreate-> 父create -> 子beforeCreate-> 子created -> 子mounted -> 父mounted”。

在單一組件中,鉤子的執(zhí)行順序是beforeCreate-> created -> mounted->… ->destroyed,但當父子組件嵌套時,父組件和子組件各擁有各自獨立的鉤子函數(shù),這些父子組件的這些鉤子是如何交融執(zhí)行,且執(zhí)行順序又是怎樣的呢?

父子組件生命周期執(zhí)行順序

組件,分別在他們的鉤子函數(shù)中打印日志,觀察執(zhí)行順序。得到的結(jié)果如圖所示,父組件先創(chuàng)建,然后子組件創(chuàng)建;子組件先掛載,然后父組件掛載。

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

子組件掛載完成后,父組件還未掛載。所以組件數(shù)據(jù)回顯的時候,在父組件mounted中獲取api的數(shù)據(jù),子組件的mounted是拿不到的。

仔細看看父子組件生命周期鉤子的執(zhí)行順序,會發(fā)現(xiàn)created這個鉤子是按照從外內(nèi)順序執(zhí)行,所以父子組件傳遞接口數(shù)據(jù)的解決方案是:

在created中發(fā)起請求獲取數(shù)據(jù),依次在子組件的created或者mounted中會接收到這個數(shù)據(jù)。

加載渲染過程

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

銷毀過程

父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

常用鉤子簡易版

父create->子created->子mounted->父mounted

補充單一組件鉤子執(zhí)行順序

activated, deactivated 是組件keep-alive時獨有的鉤子

beforeCreate

created

beforeMount

mounted

beforeUpdate

updated

activated

deactivated

beforeDestroy

destroyed

errorCaptured

總結(jié)

beforeCreate執(zhí)行時:data和el均未初始化,值為undefined

created執(zhí)行時:Vue 實例觀察的數(shù)據(jù)對象data已經(jīng)配置好,已經(jīng)可以得到data的值,但Vue 實例使用的根 DOM 元素el還未初始化

beforeMount執(zhí)行時:data和el均已經(jīng)初始化,但此時el并沒有渲染進數(shù)據(jù),el的值為“虛擬”的元素節(jié)點

mounted執(zhí)行時:此時el已經(jīng)渲染完成并掛載到實例上

beforeUpdate和updated觸發(fā)時,el中的數(shù)據(jù)都已經(jīng)渲染完成,但只有updated鉤子被調(diào)用時候,組件dom才被更新。

在created鉤子中可以對data數(shù)據(jù)進行操作,這個時候可以進行數(shù)據(jù)請求將返回的數(shù)據(jù)賦給data

在mounted鉤子對掛載的dom進行操作,此時,DOM已經(jīng)被渲染到頁面上。

雖然updated函數(shù)會在數(shù)據(jù)變化時被觸發(fā),但卻不能準確的判斷是那個屬性值被改變,所以在實際情況中用computed或watch函數(shù)來監(jiān)聽屬性的變化,并做一些其他的操作。

所有的生命周期鉤子自動綁定 this 上下文到實例中,所以不能使用箭頭函數(shù)來定義一個生命周期方法 (例如 created: () => this.fetchTodos()),會導致this指向父級。

在使用vue-router時有時需要使用來緩存組件狀態(tài),這個時候created鉤子就不會被重復調(diào)用了,如果我們的子組件需要在每次加載或切換狀態(tài)的時候進行某些操作,可以使用activated鉤子觸發(fā)。

父子組件的鉤子并不會等待請求返回,請求是異步的,VUE設計也不能因為請求沒有響應而不執(zhí)行后面的鉤子。所以,我們必須通過v-if來控制子組件鉤子的執(zhí)行時機.

注意:在父組件傳遞接口的數(shù)據(jù)給子組件時,一定要在子組件標簽上加上v-if="傳遞的接口數(shù)據(jù)"

在父組件的created中發(fā)請求獲取數(shù)據(jù),通過prop傳遞給子組件。子組件在created或者mounted中拿父組件傳遞過來的數(shù)據(jù) 這樣處理是有問題的。
在父組件調(diào)用接口傳遞數(shù)據(jù)給子組件時,接口響應顯然是異步的。這會導致無論你在父組件哪個鉤子發(fā)請求,在子組件哪個鉤子接收數(shù)據(jù)。都是取不到的。當子組件的mounted都執(zhí)行完之后,此時可能父組件的請求才返回數(shù)據(jù)。會導致,從父組件傳遞給子組件的數(shù)據(jù)是undefined。

解決方法1:

在渲染子組件的時候加上一個條件,data1是父組件調(diào)用接口返回的數(shù)據(jù)。當有數(shù)據(jù)的時候在去渲染子組件。這樣就會形成天然的阻塞。在父組件的created中的請求返回數(shù)據(jù)后,才會執(zhí)行子組件的created,mounted。最后執(zhí)行父組件的mounted。

<div class="test">
    <children v-if="data1" :data="data1" ></children>
</div>

解決方法2:

在子組件中 watch 監(jiān)聽,父組件獲取到值,這個值就會變化,自然是可以監(jiān)聽到的

watch:{
    data:{
      deep:true,
      handler:function(newVal,oldVal) {
        this.$nextTick(() => {
          this.data = newVal
          this.data = newVal.url ? newVal.url : ''
        })
      }
    },
}
從父組件點擊調(diào)用接口并顯示子組件,子組件拿到數(shù)據(jù)并監(jiān)聽在watch中調(diào)用方法并顯示。

以下為子組件,data1是從子組件傳遞過來的數(shù)據(jù)。在created,mounted中都拿不到父組件調(diào)用接口返回的data1。 只能watch監(jiān)聽data1。并調(diào)用方法渲染子組件。文章來源地址http://www.zghlxwxcb.cn/news/detail-483974.html

props:['data1'],
watch:{
    data1:{
      deep:true,
      handler:function(newVal,oldVal) {
        this.$nextTick(() => {
          this.data1 = newVal
          this.showData1(this.data1)
        })
      }
    },
}

到了這里,關于Vue父子組件生命周期執(zhí)行順序是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【React】React組件生命周期以及觸發(fā)順序(部分與vue做比較)

    【React】React組件生命周期以及觸發(fā)順序(部分與vue做比較)

    最近在學習React,發(fā)現(xiàn)其中的生命周期跟Vue有一些共同點,但也有比較明顯的區(qū)別,并且執(zhí)行順序也值得討論一下,于是總結(jié)了一些資料在這里,作為學習記錄。 由ReactDOM.render()觸發(fā) —— 初次渲染 constructor() —— 類組件中的構(gòu)造函數(shù) static getDerivedStateFromProps(props, state) 從pr

    2024年02月07日
    瀏覽(53)
  • 【微信小程序】父子組件的創(chuàng)建、通信與事件觸發(fā);組件生命周期

    【微信小程序】父子組件的創(chuàng)建、通信與事件觸發(fā);組件生命周期

    關于微信小程序中父子組件的創(chuàng)建、傳值,以及涉及到的組件生命周期。 組件的使用可以 提高開發(fā)效率 并 確保功能在各個頁面上的應用和修改的一致性 。 例如,對于一些重復的功能,比如頂部導航欄或評論區(qū),將其提煉成組件后,我們只需要在不同的頁面中引用該組件,

    2024年02月03日
    瀏覽(99)
  • 【Unity函數(shù)執(zhí)行順序(Unity腳本生命周期函數(shù))】

    【Unity函數(shù)執(zhí)行順序(Unity腳本生命周期函數(shù))】

    溫故而知新,下面我將介紹Unity入門需要了解的常用生命周期函數(shù) 生命周期函數(shù)就是該腳本對象依附的GameObject對象從出生到消亡整個生命周期中 會通過反射自動調(diào)用的一些特殊函數(shù)。 下面是對各個函數(shù)解鎖 a.調(diào)用情況: 1.在加載場景時初始化包含腳本激活狀態(tài)的GameObject時。

    2023年04月23日
    瀏覽(33)
  • uniapp 微信小程序:頁面+組件的生命周期順序

    uniapp 微信小程序:頁面+組件的生命周期順序

    這個uniapp的微信小程序項目使用的是 VUE2 首頁只提供了一個跳轉(zhuǎn)按鈕。 雖然文檔中將頁面與組件的生命周期分開羅列,但是我們在頁面和組件中所有的生命周期函數(shù)都加上,看下效果: uniap 頁面生命周期 uniapp 組件生命周期

    2024年02月15日
    瀏覽(28)
  • React和Vue生命周期、渲染順序

    React和Vue生命周期、渲染順序

    目錄 對比 命名規(guī)則 react:componentWillXxx,componentDidXxx vue2:beforeXxx,xxxed vue3:onBeforeXxx,onXxxed 生命周期 應用 created(vue2)(此時可訪問this,更早地響應):ajax請求 mounted:操作dom(初始化節(jié)點、事件監(jiān)聽、副作用、ajax、網(wǎng)絡請求) WillUnmount:清除 timer,取消ajax、網(wǎng)絡請求

    2024年02月16日
    瀏覽(27)
  • 學習Vue:組件生命周期

    在Vue.js中,組件的生命周期是指組件從創(chuàng)建到銷毀的整個過程,而生命周期鉤子函數(shù)則是在不同階段執(zhí)行的函數(shù),允許您在特定時間點添加自定義邏輯。本文將詳細介紹組件的生命周期以及常用的生命周期鉤子函數(shù)。 組件的生命周期可以分為以下幾個階段: 創(chuàng)建階段: 在這

    2024年02月12日
    瀏覽(26)
  • Vue--》詳解Vue組件生命周期的三個階段

    Vue--》詳解Vue組件生命周期的三個階段

    目錄 組件生命周期 創(chuàng)建階段 beforeCreate階段: created階段: beforeMount階段

    2024年01月22日
    瀏覽(41)
  • 深入剖析Vue組件生命周期中的每個階段

    Vue.js 是一款流行的 JavaScript 框架,用于構(gòu)建用戶界面。它采用了組件化的開發(fā)模式,組件是 Vue.js 的核心概念之一。Vue 組件的生命周期是指在組件被創(chuàng)建、渲染和銷毀的過程中,Vue 實例會自動調(diào)用一系列的鉤子函數(shù)。這些鉤子函數(shù)可用于在組件的不同階段執(zhí)行特定的操作,

    2024年02月12日
    瀏覽(43)
  • Vue學習Day3——生命周期\組件化

    Vue學習Day3——生命周期\組件化

    Vue生命周期:就是一個Vue實例從 創(chuàng)建 到 銷毀 的整個過程。 生命周期四個階段:① 創(chuàng)建 ② 掛載 ③ 更新 ④ 銷毀 1.創(chuàng)建階段:創(chuàng)建響應式數(shù)據(jù) 2.掛載階段:渲染模板 3.更新階段:修改數(shù)據(jù),更新視圖 4.銷毀階段:銷毀Vue實例 Vue生命周期過程中,會 自動運行一些函數(shù) ,被稱

    2024年02月15日
    瀏覽(28)
  • vue04---計算屬性/監(jiān)聽(偵聽)屬性/Vue生命周期/組件介紹和使用/組件間通信/ref屬性

    # 1 計算屬性是基于它們的依賴變量進行緩存的 # 2 計算屬性只有在它的相關依賴變量發(fā)生改變時才會重新求值,否則不會變(函數(shù)只要頁面變化,就會重新運算) # 3 計算屬性就像Python中的property,可以把方法/函數(shù)偽裝成屬性 # 4 計算屬性,必須有返回值 基本使用 重寫過濾案

    2024年02月08日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包