亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue 2.0中生命周期與鉤子函數的一些理解

 更新時間:2017年05月09日 08:45:20   作者:夏日蟬鳴  
這篇文章主要給大家介紹了關于Vue 2.0中生命周期與鉤子函數的相關資料,對大家學習或者使用vue2.0具有一定的參考學習價值,需要的朋友們下面隨小編一起來看看吧。

前言

在使用vue一個多禮拜后,感覺現在還停留在初級階段,雖然知道怎么和后端做數據交互,但是對于mounted這個掛載還不是很清楚的。放大之,對vue的生命周期不甚了解。只知道簡單的使用,而不知道為什么,這對后面的踩坑是相當不利的。

因為我們有時候會在幾個鉤子函數里做一些事情,什么時候做,在哪個函數里做,我們不清楚。

于是我開始先去搜索,發(fā)現vue2.0的生命周期沒啥文章。大多是1.0的版本介紹。最后還是找到一篇不錯的(會放在最后)

vue生命周期簡介


咱們從上圖可以很明顯的看出現在vue2.0都包括了哪些生命周期的函數了。

生命周期探究

對于執(zhí)行順序和什么時候執(zhí)行,看上面兩個圖基本有個了解了。下面我們將結合代碼去看看鉤子函數的執(zhí)行。

ps:下面代碼可以直接復制出去執(zhí)行

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <script type="text/javascript" src="https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>
</head>
<body>

<div id="app">
 <p>{{ message }}</p>
</div>

<script type="text/javascript">
 
 var app = new Vue({
 el: '#app',
 data: {
  message : "xuxiao is boy" 
 },
 beforeCreate: function () {
  console.group('beforeCreate 創(chuàng)建前狀態(tài)===============》');
  console.log("%c%s", "color:red" , "el : " + this.$el); //undefined
  console.log("%c%s", "color:red","data : " + this.$data); //undefined 
  console.log("%c%s", "color:red","message: " + this.message) 
 },
 created: function () {
  console.group('created 創(chuàng)建完畢狀態(tài)===============》');
  console.log("%c%s", "color:red","el : " + this.$el); //undefined
  console.log("%c%s", "color:red","data : " + this.$data); //已被初始化 
  console.log("%c%s", "color:red","message: " + this.message); //已被初始化
 },
 beforeMount: function () {
  console.group('beforeMount 掛載前狀態(tài)===============》');
  console.log("%c%s", "color:red","el : " + (this.$el)); //已被初始化
  console.log(this.$el);
  console.log("%c%s", "color:red","data : " + this.$data); //已被初始化 
  console.log("%c%s", "color:red","message: " + this.message); //已被初始化 
 },
 mounted: function () {
  console.group('mounted 掛載結束狀態(tài)===============》');
  console.log("%c%s", "color:red","el : " + this.$el); //已被初始化
  console.log(this.$el); 
  console.log("%c%s", "color:red","data : " + this.$data); //已被初始化
  console.log("%c%s", "color:red","message: " + this.message); //已被初始化 
 },
 beforeUpdate: function () {
  console.group('beforeUpdate 更新前狀態(tài)===============》');
  console.log("%c%s", "color:red","el : " + this.$el);
  console.log(this.$el); 
  console.log("%c%s", "color:red","data : " + this.$data); 
  console.log("%c%s", "color:red","message: " + this.message); 
 },
 updated: function () {
  console.group('updated 更新完成狀態(tài)===============》');
  console.log("%c%s", "color:red","el : " + this.$el);
  console.log(this.$el); 
  console.log("%c%s", "color:red","data : " + this.$data); 
  console.log("%c%s", "color:red","message: " + this.message); 
 },
 beforeDestroy: function () {
  console.group('beforeDestroy 銷毀前狀態(tài)===============》');
  console.log("%c%s", "color:red","el : " + this.$el);
  console.log(this.$el); 
  console.log("%c%s", "color:red","data : " + this.$data); 
  console.log("%c%s", "color:red","message: " + this.message); 
 },
 destroyed: function () {
  console.group('destroyed 銷毀完成狀態(tài)===============》');
  console.log("%c%s", "color:red","el : " + this.$el);
  console.log(this.$el); 
  console.log("%c%s", "color:red","data : " + this.$data); 
  console.log("%c%s", "color:red","message: " + this.message)
 }
 })
</script>
</body>
</html>

create 和 mounted 相關

咱們在chrome瀏覽器里打開,F12看console就能發(fā)現

  • beforecreated:el 和 data 并未初始化
  • created:完成了 data 數據的初始化,el沒有
  • beforeMount:完成了 el 和 data 初始化
  • mounted :完成掛載

另外在標紅處,我們能發(fā)現el還是 {{message}} ,這里就是應用的 Virtual DOM(虛擬Dom)技術,先把坑占住了。到后面mounted掛載的時候再把值渲染進去。

update 相關

這里我們在 chrome console里執(zhí)行以下命令

app.message= 'yes !! I do';

下面就能看到data里的值被修改后,將會觸發(fā)update的操作。

destroy 相關

有關于銷毀,暫時還不是很清楚。我們在console里執(zhí)行下命令對 vue實例進行銷毀。銷毀完成后,我們再重新改變message的值,vue不再對此動作進行響應了。但是原先生成的dom元素還存在,可以這么理解,執(zhí)行了destroy操作,后續(xù)就不再受vue控制了。

app.$destroy();


生命周期總結

這么多鉤子函數,我們怎么用呢,我想大家可能有這樣的疑問吧,我也有,哈哈哈。

  • beforecreate : 舉個栗子:可以在這加個loading事件
  • created :在這結束loading,還做一些初始化,實現函數自執(zhí)行
  • mounted : 在這發(fā)起后端請求,拿回數據,配合路由鉤子做一些事情
  • beforeDestory: 你確認刪除XX嗎? destoryed :當前組件已被刪除,清空相關內容

當然,還有更多,繼續(xù)探索中......

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • vue中使用elementUI組件手動上傳圖片功能

    vue中使用elementUI組件手動上傳圖片功能

    Vue是一套構建用戶界面的框架, 開發(fā)只需要關注視圖層, 它不僅易于上手,還便于與第三方庫或既有項目的整合。這篇文章主要介紹了vue中使用elementUI組件手動上傳圖片,需要的朋友可以參考下
    2019-12-12
  • vue使用npm發(fā)布自己的公網包

    vue使用npm發(fā)布自己的公網包

    本文主要介紹了vue使用npm發(fā)布自己的公網包,通過創(chuàng)建一個簡單的npm包,本文詳細闡述了從創(chuàng)建到發(fā)布的整個過程,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • vue實現頁面上傳文件夾壓縮后傳給服務器的操作

    vue實現頁面上傳文件夾壓縮后傳給服務器的操作

    這篇文章主要介紹了vue實現頁面上傳文件夾壓縮后傳給服務器的操作,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • vuex5中的Pinia插件機制

    vuex5中的Pinia插件機制

    這篇文章主要介紹了vuex5中的Pinia插件機制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Nuxt引入vue-persistedstate以及踩坑記錄

    Nuxt引入vue-persistedstate以及踩坑記錄

    這篇文章主要介紹了Nuxt引入vue-persistedstate以及踩坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue 同步異步存值取值實現案例

    Vue 同步異步存值取值實現案例

    這篇文章主要介紹了Vue 同步異步存值取值實現案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Element Popover 彈出框的使用示例

    Element Popover 彈出框的使用示例

    這篇文章主要介紹了Element Popover 彈出框的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • vue實現簡單的登錄彈出框

    vue實現簡單的登錄彈出框

    這篇文章主要為大家詳細介紹了vue實現簡單的登錄彈出框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Vue.js父與子組件之間傳參示例

    Vue.js父與子組件之間傳參示例

    本篇文章主要介紹了Vue.js父與子組件之間傳參示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 基于vue實現分頁效果

    基于vue實現分頁效果

    這篇文章主要介紹了基于vue實現分頁效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論