vue生命周期


一、生命周期圖示

  生命周期可以理解為三部分,第一部分為初始化Vue實例的過程,第二部分為數據渲染,更新Dom的過程,第三部分為銷毀實例的過程,每一個部分都有對應的鈎子函數來完成對應的部分過程。

初始化階段的鈎子函數:

beforeCreate() //實例創建前:數據和模板均未獲取到 
created() //實例創建后: 最早可訪問到 data 數據,但模板未獲取到 
beforeMount() //數據掛載前:模板已獲取到,但是數據未掛載到模板上 
mounted() //數據掛載后: 數據已掛載到模板中

更新階段的鈎子函數:

beforeUpdate() //模板更新前:data 改變后,更新數據模板前調用

updated() //模板更新后:將 data 渲染到數據模板中

銷毀階段的鈎子函數:

beforeDestroy() //實例銷毀前

destroyed() //實例銷毀后

二、實例演示

1、beforeCreate

Vue 實例創建前被調用,數據和模板均未獲取到

<div id="app">
    {{ msg }}
</div>
<script>

    var vm = new Vue({
        el:'#app',
        data:{
            msg:'測試鈎子函數'
        },
        beforeCreate(){
            console.log('beforeCreate',this.$el,this.$data)
        }


    })

</script>

2、created

  Vue實例創建后,最早可以獲取到 data數據的鈎子,但是模板未獲取到

<div id="app">
    {{ msg }}
</div>
<script>

    var vm = new Vue({
        el:'#app',
        data:{
            msg:'測試鈎子函數'
        },

        created(){
            console.log('created',this.$el,this.$data)
        }

    })

</script>

3、beforeMount

數據掛載之前,獲取到了模板,但是數據還未掛載到模板上

<div id="app">
    {{ msg }}
</div>
<script>

    var vm = new Vue({
        el:'#app',
        data:{
            msg:'測試鈎子函數'
        },

        beforeMount(){
            console.log('beforeMount',this.$el,this.$data)
        }

    })

</script>

4、mounted

數據已經掛載到模板中了

<div id="app">
    {{ msg }}
</div>
<script>

    var vm = new Vue({
        el:'#app',
        data:{
            msg:'測試鈎子函數'
        },

        mounted(){
            console.log('mounted',this.$el,this.$data)
        }

    })

</script>

5、beforeUpdate

當data 數據更新之后,去更新模板中的數據前調用

<div id="app">
    {{ msg }}
</div>
<script>

    var vm = new Vue({
        el:'#app',
        data:{
            msg:'測試鈎子函數'
        },

        beforeUpdate() {
            console.log('beforeUpdate',this.$el.innerHTML,this.$data)
        }

    })

</script>

6、updated

當data 數據更新之后,去更新模板中的數據調用

<div id="app">
    {{ msg }}
</div>
<script>
var vm = new Vue({ el:'#app', data:{ msg:'測試鈎子函數' }, updated() { console.log('updated',this.$el.innerHTML,this.$data) } }) </script>

7、beforeDestroy

銷毀 Vue 實例之前調用

8、destroyed

銷毀 Vue 實例之后調用

三、總結

1、鈎子函數用途

每一個鈎子函數在特定的階段執行,可以利用不同鈎子函數的特性,實現不同的功能。

created函數是最早可以獲取到 data數據的鈎子,可以發送 ajax 異步請求,向后台請求數據。

mounted函數是數據已經掛載到模板中了,但是data數據一旦更新就會使虛擬DOM重新渲染頁面,也是可以發送 ajax 異步請求,向后台請求數據。

beforeDestroy函數時是在銷毀 Vue 實例之前調用,可以用於處理一些收尾工作。

2、mount

在執行created鈎子函數之后獲取到了data數據,但是沒有獲取模板,此時會問你Vue實例中是否存在"el"選項,如果沒有,就會使用這個方法手動掛載一個"el"選項。

<script>

    var vm = new Vue({

        data:{
            msg:'測試鈎子函數'
        },

    }).$mount("#app") //手動掛在el選項

</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM