Vue学习计划-Vue3--核心语法(五)生命周期、自定义Hook

1. 生命周期
  • 概念: Vue组件实例在创建时要经历一些列的初始化步骤,在此过程中vue会在合适的时机,调用特定函数,从而让开发中有机会在特定阶段运行自己的代码,这些特定的函数统称为:生命周期钩子
  • 规律:

生命周期整体分为四个阶段:分别是:创建、挂载、更新、销毁,每个阶段都有两个钩子,一前一后

  • Vue2的生命周期

创建阶段:beforeCreate、created

挂载阶段:beforeMount、mounted

更新阶段: beforeUpdate、updated

销毁阶段:beforeDestroy、destroyed

  • Vue3的生命周期

创建阶段:setup

挂载阶段:onBeforeMount、onMounted

更新阶段:onBeforeUpdate、onUpdated

卸载阶段:onBeforeUnmount、onMounted

  • 常用的钩子:onMounted(挂载完毕)、onUpdated(更新完毕)、onBeforeUnmount(卸载之前)

  • 示例代码

2. 自定义Hook
  • 什么是hook? ------------本质是一个函数,把setup函数中使用的Composition API进行了封装,类似与Vue2中的mixin
  • 自定义hook的优势:复用代码,让setup中的逻辑更清楚易懂
  • hooks文件夹中,每一个功能的hook文件期望是usexxx命名的
  • hook的出现诠释了composition API 的终极意义
  • 示例代码
    1. useSum.ts中内容如下:

      import { ref, computed, onMounted } from 'vue'

      export default function() {
      let sum = ref(0)

      let bigSum = computed(()=> {
      return sum.value * 10
      })

      onMounted(()=> {
      changeSum()
      })

      function changeSum(){
      sum.value += 1
      }

      return {sum, bigSum, changeSum}
      }

    2. useDog.ts中内容如下:

      import { reactive, onMounted } from 'vue'
      import axios from 'axios'

      export default function(){
      let dogList = reactive([])

      async function getDog(){
      try{
      let {data} = await axios.get('https://dog.ceo/api/breed/pembroke/images/random')
      dogList.push(data.message)
      } catch(error){
      alert(error)
      }
      }
      onMounted(() => {
      getDog()
      })

      return {dogList, getDog}
      }

    3. 组件中具体使用:

相关推荐
Momo__9 分钟前
你写的 import 重试,从来没生效过
前端·javascript·typescript
ruanno_top9 分钟前
1 万行表格只渲染 18 行:虚拟滚动让我放弃了三个功能
vue.js
金色光环11 分钟前
【DSP学习】C2000_ADC中断_笔记
笔记·学习
Дерек的学习记录18 分钟前
Unreal Engine 5:第三人称运动系统和人物动画
开发语言·学习·ue5
zhangrelay18 分钟前
mrpt杂乱笔记-26-10-31
笔记·学习
仨孩子的爹21 分钟前
套打总偏两毫米:预印刷单据的校准方法和三个误区
vue.js
徐小夕37 分钟前
JitKnow知识库4.8发布:本体+知识图谱检索引擎,让AI回答不再“一本正经地胡说八道”
前端·vue.js·github
tryCbest1 小时前
Vue3——第 11 篇:组合式 API(上)——setup 与响应式 API 深度解析
前端·javascript·vue.js
衡石科技1 小时前
让多轮问数保持口径一致:Data Agent 的上下文、偏好与学习开关
人工智能·学习·安全
tryCbest2 小时前
Vue3——第 13 篇:计算属性与侦听器——computed 与 watch 的进化
前端·javascript·vue.js