最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂Vue八大生命周期鉤子函數(shù)

 更新時(shí)間:2023年05月05日 11:15:47   作者:北極光之夜。  
這篇文章主要介紹了Vue八大生命周期鉤子函數(shù),生命周期函數(shù),就是在某個(gè)時(shí)刻會(huì)自動(dòng)執(zhí)行的函數(shù),本文帶你了解八大生命周期鉤子函數(shù),一起來看看吧

一.速識(shí)概念:

  我們把一個(gè)對(duì)象從生成(new)到被銷毀(destory)的過程,稱為生命周期。而生命周期函數(shù),就是在某個(gè)時(shí)刻會(huì)自動(dòng)執(zhí)行的函數(shù)。
  按照官方的原話,就是每個(gè) Vue 實(shí)例在被創(chuàng)建時(shí)都要經(jīng)過一系列的初始化過程——例如,需要設(shè)置數(shù)據(jù)監(jiān)聽、編譯模板、將實(shí)例掛載到 DOM 并在數(shù)據(jù)變化時(shí)更新 DOM 等。同時(shí)在這個(gè)過程中也會(huì)運(yùn)行一些叫做生命周期鉤子的函數(shù),這給了用戶在不同階段添加自己的代碼的機(jī)會(huì)。
  簡單來說就是每個(gè)Vue實(shí)例在被創(chuàng)建時(shí)都要經(jīng)過一系列的初始化過程:創(chuàng)建實(shí)例,裝載模板,渲染模板等。Vue為生命周期中的每個(gè)狀態(tài)都設(shè)置了鉤子函數(shù)(監(jiān)聽函數(shù)) 。每當(dāng)Vue實(shí)例處于不同的生命周期時(shí),對(duì)應(yīng)的函數(shù)就會(huì)被觸發(fā)調(diào)用。

二.八大生命周期鉤子函數(shù):

函數(shù)調(diào)用時(shí)間
beforeCreatevue實(shí)例初始化之前調(diào)用
createdvue實(shí)例初始化之后調(diào)用
beforeMount掛載到DOM樹之前調(diào)用
mounted掛載到DOM樹之后調(diào)用
beforeUpdate數(shù)據(jù)更新之前調(diào)用
updated數(shù)據(jù)更新之后調(diào)用
beforeDestroyvue實(shí)例銷毀之前調(diào)用
destroyedvue實(shí)例銷毀之后調(diào)用

下面是官方文檔里的生命周期圖,英語好的同學(xué)可以看看:

在這里插入圖片描述

三.結(jié)合代碼了解:

 先看案例基本代碼如下,后面通過如下代碼步驟演示一個(gè)對(duì)象從生成到被銷毀的過程各階段執(zhí)行的生命周期函數(shù)。注意show函數(shù)的作用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        {{information}}
    </div>
    <script type="text/javascript">
       //創(chuàng)建vue實(shí)例
       var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           }
       })
       // 各個(gè)生命周期函數(shù)通過調(diào)用下面這個(gè)函數(shù)了解其所處的生命階段
       function show(inf,obj){
          console.log(inf);
          console.log("------------------------------------------");
          console.log('獲取vue實(shí)例data里的數(shù)據(jù):');
          console.log(obj.information);
          console.log("------------------------------------------");
          console.log('掛載的對(duì)象,就是DOM:');
          console.log(obj.$el);
          console.log("------------------------------------------");
          console.log('頁面上已經(jīng)掛載的DOM:');
          console.log(document.getElementById('app').innerHTML);
       }

    </script>

1. beforeCreate:

 這個(gè)階段vue實(shí)例剛剛在內(nèi)存中創(chuàng)建,此時(shí)data和methods這些都沒初始化好。
 在案例中添加beforeCreate鉤子函數(shù):

 var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
           beforeCreate: function(){
             // 傳入該階段簡介與this,this就是該階段的vue實(shí)例
                  show('vue實(shí)例初始化之前',this);
           }
       })

看運(yùn)行結(jié)果:

在這里插入圖片描述

 可以看到,此時(shí)vue實(shí)例剛剛在內(nèi)存中創(chuàng)建,其它什么都undefined。

2.created:

 這個(gè)階段vue實(shí)例在內(nèi)存中已經(jīng)創(chuàng)建好了,data和methods也能夠獲取到了,但是模板還沒編譯。
 在案例中添加created鉤子函數(shù):

 var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
           created: function(){
                  show('vue實(shí)例初始化之后',this);
           }
       })

看結(jié)果:

在這里插入圖片描述

看到?jīng)],已經(jīng)知道data里的數(shù)據(jù)了。其它的話都沒。

3.beforeMount:

 這個(gè)階段完成了模板的編譯,但是還沒掛載到頁面上。
 在案例中添加鉤子函數(shù):

 var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
           beforeMount: function(){
             show('掛載之前',this);
           }
       })

看結(jié)果:

在這里插入圖片描述

看到?jīng)],要掛載的對(duì)象都編譯好了,但是頁面的DOM樹還沒掛上去,這個(gè)階段頁面還沒能顯示出來。

4.mounted:

 這個(gè)階段,模板編譯好了,也掛載到頁面中了,頁面也可以顯示了。
 在案例中添加鉤子函數(shù):

  var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
           mounted: function(){
            show('掛載之后',this);
           }
       })

看結(jié)果:

在這里插入圖片描述

5.beforeUpdate:

 轉(zhuǎn)態(tài)更新之前執(zhí)行此函數(shù),此時(shí)data中數(shù)據(jù)的狀態(tài)值已經(jīng)更新為最新的,但是頁面上顯示的數(shù)據(jù)還是最原始的,還沒有重新開始渲染DOM樹。

 先改變data里數(shù)據(jù):

vm.information = '南極光之夜';

 在案例中添加鉤子函數(shù):

 var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
          beforeUpdate: function(){
            show('更新之前',this);
           }
       })

看結(jié)果:

在這里插入圖片描述

看到?jīng)],vue實(shí)例里的數(shù)據(jù)已經(jīng)變成了南極光之夜。但是此階段頁面DOM節(jié)點(diǎn)上顯示的還是初始的數(shù)據(jù)北極光之夜。

6.updated:

 這個(gè)階段是轉(zhuǎn)態(tài)更新完成后執(zhí)行此函數(shù),此時(shí)data中數(shù)據(jù)的狀態(tài)值是最新的,而且頁面上顯示的數(shù)據(jù)也是最新的,DOM節(jié)點(diǎn)已經(jīng)被重新渲染了。

 在案例中添加鉤子函數(shù):

  var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
          updated: function(){
            show('更新之后',this);
           }
       })

看運(yùn)行結(jié)果:

在這里插入圖片描述

更新了,全都更新了~

7.beforeDestroy:

 beforeDestroy階段處于vue實(shí)例被銷毀之前,當(dāng)然,這個(gè)階段vue實(shí)例還能用。

 銷毀Vue實(shí)例:

vm.$destroy();

 在案例中添加鉤子函數(shù):

 var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
          beforeDestroy: function() {
            show('銷毀之前',this);
          }
       })

看效果:

在這里插入圖片描述

8.destroyed:

 這個(gè)階段在vue實(shí)例銷毀后調(diào)用,此時(shí)所有實(shí)例指示的所有東西都會(huì)解除綁定,事件監(jiān)聽器也都移除,子實(shí)例也被銷毀。

 在案例中添加鉤子函數(shù):

var vm = new Vue({
           el: '#app',
           data: {
               information: '北極光之夜。' 
           },
          destroyed: function() {
            show('銷毀之后',this);
          }
       })

看結(jié)果:

在這里插入圖片描述

到此這篇關(guān)于一文搞懂Vue八大生命周期鉤子函數(shù)的文章就介紹到這了,更多相關(guān)Vue八大生命周期鉤子函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue如何使用element ui表格el-table-column在里面做判斷

    vue如何使用element ui表格el-table-column在里面做判斷

    這篇文章主要介紹了vue如何使用element ui表格el-table-column在里面做判斷問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié)

    Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié)

    這篇文章主要介紹了Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • vue v-on:click傳遞動(dòng)態(tài)參數(shù)的步驟

    vue v-on:click傳遞動(dòng)態(tài)參數(shù)的步驟

    這篇文章主要介紹了vue v-on:click傳遞動(dòng)態(tài)參數(shù)的步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 解決vue3.0運(yùn)行項(xiàng)目warning Insert `·` prettier/prettier問題

    解決vue3.0運(yùn)行項(xiàng)目warning Insert `·` prettier/pret

    這篇文章主要介紹了解決vue3.0運(yùn)行項(xiàng)目warning Insert `·` prettier/prettier問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue-json-editor json編輯器的使用

    vue-json-editor json編輯器的使用

    本文主要介紹了vue-json-editor json編輯器的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 在vue2?中使用?tailwindcss的方法?親測可用

    在vue2?中使用?tailwindcss的方法?親測可用

    這篇文章主要介紹了在vue2?中使用?tailwindcss的方法?親測可用,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • vue.js系列中的vue-fontawesome使用

    vue.js系列中的vue-fontawesome使用

    這篇文章主要介紹了vue.js系列中的vue-fontawesome使用,需要的朋友可以參考下
    2018-02-02
  • Vue項(xiàng)目如何部署到SpringBoot工程下

    Vue項(xiàng)目如何部署到SpringBoot工程下

    這篇文章主要介紹了Vue項(xiàng)目如何部署到SpringBoot工程下問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue.2.0.5實(shí)現(xiàn)Class 與 Style 綁定的實(shí)例

    Vue.2.0.5實(shí)現(xiàn)Class 與 Style 綁定的實(shí)例

    本篇文章主要介紹了Vue.2.0.5實(shí)現(xiàn)Class 與 Style 綁定的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Vue組件封裝方案實(shí)現(xiàn)淺析

    Vue組件封裝方案實(shí)現(xiàn)淺析

    這篇文章主要介紹了Vue組件封裝方案實(shí)現(xiàn),我們將從分析組件封裝的優(yōu)勢(shì)開始,然后依次介紹 vue.js 的基本概念,以及如何創(chuàng)建、封裝和使用自定義組件
    2023-03-03

最新評(píng)論

香格里拉县| 邮箱| 社旗县| 广平县| 涿鹿县| 灵璧县| 龙南县| 宿州市| 肇庆市| 乐山市| 县级市| 乾安县| 盘锦市| 明光市| 枝江市| 临清市| 任丘市| 文山县| 岑溪市| 报价| 楚雄市| 英山县| 忻州市| 正蓝旗| 陆良县| 安徽省| 曲麻莱县| 边坝县| 石棉县| 彩票| 诏安县| 平昌县| 泾源县| 玉屏| 弋阳县| 崇阳县| 邛崃市| 柳江县| 得荣县| 双桥区| 禹城市|