您现在的位置是:首页 >技术交流 >vue3怎么使用生命周期网站首页技术交流

vue3怎么使用生命周期

繁若华尘 2025-07-20 12:01:03
简介vue3怎么使用生命周期

在 Vue3 中,生命周期函数的使用方式与 Vue2 类似,但部分钩子函数名称有所变化,并针对组合式 API(Composition API)进行了优化。以下是详细说明:


一、Vue3 生命周期钩子函数的变化

  1. beforeDestroybeforeUnmount
  2. destroyedunmounted
    其他钩子名称与 Vue2 保持一致,但需注意在组合式 API 中通过函数形式调用。

二、选项式 API(Options API)中的使用

直接在组件选项中定义生命周期钩子:

export default {
  data() {
    return { count: 0 }
  },
  beforeCreate() {
    console.log('组件实例初始化之前')
  },
  created() {
    console.log('组件实例创建完成,数据已初始化')
  },
  beforeMount() {
    console.log('挂载到 DOM 前')
  },
  mounted() {
    console.log('挂载到 DOM 后')
  },
  beforeUpdate() {
    console.log('数据变化,DOM 更新前')
  },
  updated() {
    console.log('数据变化,DOM 更新后')
  },
  beforeUnmount() {  // 替代 beforeDestroy
    console.log('组件卸载前')
  },
  unmounted() {      // 替代 destroyed
    console.log('组件卸载后')
  }
}

三、组合式 API(Composition API)中的使用

setup() 函数中通过导入的钩子函数注册生命周期:

import { 
  onBeforeMount, 
  onMounted, 
  onBeforeUpdate, 
  onUpdated, 
  onBeforeUnmount, 
  onUnmounted 
} from 'vue'

export default {
  setup() {
    // 生命周期钩子需在 setup 中显式调用
    onBeforeMount(() => {
      console.log('挂载到 DOM 前')
    })
    onMounted(() => {
      console.log('挂载到 DOM 后')
      // 异步操作(如接口请求)通常放在这里
    })
    onBeforeUpdate(() => {
      console.log('数据变化,DOM 更新前')
    })
    onUpdated(() => {
      console.log('数据变化,DOM 更新后')
    })
    onBeforeUnmount(() => {
      console.log('组件卸载前')
      // 清理定时器、取消事件监听等操作
    })
    onUnmounted(() => {
      console.log('组件卸载后')
    })

    return {}
  }
}

四、生命周期的执行顺序

  1. 组件初始化阶段
    beforeCreatecreatedsetup()onBeforeMountonMounted

  2. 更新阶段
    数据变化时:onBeforeUpdateonUpdated

  3. 卸载阶段
    onBeforeUnmountonUnmounted


五、常见场景示例

  1. onMounted 中获取数据

    onMounted(async () => {
      const data = await fetchData()
      // 更新响应式数据
    })
    
  2. onBeforeUnmount 中清理资源

    onBeforeUnmount(() => {
      clearInterval(timerId)
      window.removeEventListener('resize', handleResize)
    })
    

六、注意事项

  1. 组合式 API 中没有 beforeCreatecreated
    直接在 setup() 中编写原本在这两个钩子中的逻辑(setup 替代了它们的作用)。

  2. 避免在 updated 中修改状态
    可能导致无限循环更新。

  3. 组合式 API 中无 this
    通过响应式变量(如 refreactive)和函数参数访问数据。


通过以上方式,可以灵活使用 Vue3 的生命周期钩子函数管理组件的逻辑。组合式 API 更推荐用于复杂组件,而选项式 API 适合简单场景。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。