vue3.0 Composition API 上手初體驗 神奇的 setup 函數 (三) 生命週期函數

vue3.0 Composition API 上手初體驗 神奇的 setup 函數 (三) 生命週期函數

通過前面兩講,我相信大家對於 vue 3.0 雙向綁定數據,已經有了一些瞭解了。但是,對於生命週期函數,還是一臉懵逼的。

這一講,我們來講解生命週期函數。

vue 2.0 生命週期對比 3.0 生命週期

2.0 週期名稱 3.0 週期名稱 說明
beforeCreate setup 組件創建之前
created setup 組件創建完成
beforeMount onBeforeMount 組件掛載之前
mounted onMounted 組件掛載完成
beforeUpdate onBeforeUpdate 數據更新,虛擬 DOM 打補丁之前
updated onUpdated 數據更新,虛擬 DOM 渲染完成
beforeDestroy onBeforeUnmount 組件銷燬之前
destroyed onUnmounted 組件銷燬後

通過上表對比,我們可以看到,原有的生命週期,基本都是存在的。並且新的明明,更加直觀,通過 on 前綴,可以直觀的看到,這是一個生命週期函數。

生命週期是如何使用的呢?上代碼!

我們在我們項目中,創建一個文件 src\views\Life.vue, 並在路由中掛載該組件。

# 進入項目文件夾
cd ~/Sites/myWork/demo/vue3-demo
# 創建新組件文件
touch src/views/Life.vue

src/router/index.js

// ...
{
  path: '/life',
  component: () => import('@/views/Life.vue')
}
// ...

後續章節,我就不寫上面的代碼了。大家應該都知道了。

編寫 srv/views/Life.vue 內容

<template>
  <router-link to="/">點這裏去首頁</router-link>
  <hr>
  <div class="home">
    這裏是一個計數器 >>> <span class="red">{{count}}</span> <br>
    <button @click="countAdd">點擊加數字</button>
  </div>
</template>
<script>
// 你需要使用到什麼生命週期,就引出來什麼生命週期
import {
  onBeforeMount,
  onMounted,
  onBeforeUpdate,
  onUpdated,
  onBeforeUnmount,
  onUnmounted,
  ref
} from 'vue'

export default {
  // setup 函數,就相當於 vue 2.0 中的 created
  setup () {
    const count = ref(0)
    // 其他的生命週期都寫在這裏
    onBeforeMount (() => {
      count.value++
      console.log('onBeforeMount', count.value)
    })
    onMounted (() => {
      count.value++
      console.log('onMounted', count.value)
    })
    // 注意,onBeforeUpdate 和 onUpdated 裏面不要修改值,會死循環的哦!
    onBeforeUpdate (() => {
      console.log('onBeforeUpdate', count.value)
    })
    onUpdated (() => {
      console.log('onUpdated', count.value)
    })
    onBeforeUnmount (() => {
      count.value++
      console.log('onBeforeUnmount', count.value)
    })
    onUnmounted (() => {
      count.value++
      console.log('onUnmounted', count.value)
    })
    // 定義一個函數,修改 count 的值。
    const countAdd = () => {
      count.value++
    }
    return {
      count,
      countAdd
    }
  }
}
</script>

看結果

我們在瀏覽器中進入頁面,並且點擊兩下按鈕,然後回到首頁,可以在控制檯中看到完整的生命週期的輸出,如下圖所示:

劃重點

首先,在 vue 3.0 中,生命週期是從 vue 中導出的,我們需要用到哪些,就導出哪些。

可能不少看官會認爲多次一舉,但實則不然。vue 提供這麼多的生命週期,有幾個是我們常用的?在大多數的組件中,我們用不到生命週期。即便是頁面級別的應用,可能用到最多的是 onMounted 即可。

當然,那些綁定時間的操作會用到解綁,因此會用到 onUnmounted。其它的生命週期,正常情況下是基本用不到的。所以,通過引入使用的這種設定,可以減少我們的最終編譯的項目的體積。而且,這樣的引入使用,更加的邏輯清晰。

其次,除 setup 之外,其他的生命週期函數,都是在 setup 裏面直接書寫函數即可。

好的,生命週期我相信已經講解清楚了。下一講,我們來討論計算屬性。

本文由 FungLeo 原創,允許轉載,但轉載必須保留首發鏈接。


《vue3.0 Composition API 上手初體驗》 文章目錄地址: https://blog.csdn.net/fungleo/category_10020552.html 我會不定期的補充一些相關內容,歡迎關注訂閱!

文章代碼倉庫 https://github.com/fengcms/vue3-demo 會用 git 的朋友,可以去直接下載我的代碼。當然,給我點個 star 啥的,也不是不可以的哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章