VUE页面生命周期钩子函数

本文详细介绍了Vue实例的生命周期,包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed等关键阶段。在不同生命周期阶段,我们可以执行不同的操作,如在created阶段可以初始化数据,在mounted阶段可以访问DOM元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                             预备知识:

1.vue的生命周期 生命周期函数,又叫钩子函数   生命周期钩子===生命周期函数===生命周期事件

2.

什么是生命周期
Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。
在Vue的整个生命周期中,它提供了一系列的事件,可以让我们在事件触发时注册js方法,可以让我们用自己注册的js方法控制整个大局,在这些事件响应方法中的this直接指向的是vue的实例。 

3.vue中的生命周期函数,一般都是 成对出现

4.10个生命周期函数 :    vue 实例被创建一直到 vue 实例被销毁 

beforecreate  --- vue实例创建之前 

 created -----------vue实例创建之后  

beforemounte ---DOM挂载之前  

mounted -----------DOM挂载之后  

beforeupdate ---数据更新之前  

updated -----------数据更新之后  

beforeDestroy ---组件销毁之前  

destroyed ----------组件销毁之后

5.

6.

  • “创建期间”的生命周期方法
    beforeCreate  --- vue实例"创建前"
    在调用beforeCreate的时候,仅仅表示vue实例刚刚被创建出来,此时此刻还没有初始化好vue实例中的数据和方法,
    所以此时此刻不能访问vue实例中保存的数据和方法。

    created -----------vue实例"创建后"

    beforemounte ---DOM挂载之前

    mounted -----------DOM挂载之后

  • “运行期间”的生命周期方法
    beforeupdate ---数据更新之前(----视图层中的数据的前后变化)

    updated -----------数据更新之后(----视图层中的数据的前后变化)

  • “销毁期间”的生命周期方法
    beforeDestroy ---组件销毁之前

    destroyed -----------组件销毁之后
     

beforecreate&created、beforemounte&mounted 

代码:

Markup

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
<h1 id="title">{{message}}</h1>
</div>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
el:'#app',
data:{
message:'妞妞早上好呀'
},
computed:{

},
watch:{

},
// beforeCreate vue实例创造前
beforeCreate(){
console.log('vue实例创建前');
console.log('----------'+this.$el);
console.log('----------'+this.$data)
console.log('----------'+this.message);
},
//vue实例创造之后,可以操作数据
created:function(){
console.log('vue实例创建后');
console.log('----------'+this.$el);
console.log('----------'+this.$data)
console.log('----------'+this.message);
},
// DOM挂载前
beforeMount:function(){
console.log('DOM挂载前');
// 此时的$el为虚拟的DOM节点
console.log('----------'+this.$el);
console.log('----------'+this.$data);
console.log(document.querySelector('#title').innerHTML);
},
// DOM挂载后
mounted :function() {
console.log('DOM挂载后');
// 此时的$el为真是的DOM节点
console.log('----------'+this.$el);
console.log('----------'+this.$data);
console.log(document.querySelector('#title').innerHTML);
},
methods:{
}
})
</script>
</body>
</html>

结果:

分析:

vue实例创建前:输出的都显示的没有定义

vue实例创建后:实例创建后,可以操作数据

DOM挂载前:第三个数据时虚拟DOM

DOM挂载前:第三个数据时真实的DOM

<think>好的,用户想了解Vue3的生命周期钩子函数及其用法,需要详细说明和示例。首先,我需要回顾Vue3的生命周期钩子,确保记得正确。Vue3引入了Composition API,但Options API中的钩子仍然可用,不过有一些变化,比如`beforeDestroy`和`destroyed`改名为`beforeUnmount`和`unmounted`。 接下来,我应该列出每个钩子的执行时机和用途。可能需要对比Vue2的钩子,但用户主要关注Vue3,所以重点放在Vue3的变化上。需要确保每个钩子的描述准确,比如`beforeCreate`和`created`在Composition API中对应的`setup()`函数。 然后,示例部分,用户可能需要代码示例来展示如何使用这些钩子。在Options API和Composition API中的不同用法都需要说明。例如,在Options API中,直接在组件选项中定义钩子函数;在Composition API中使用`onMounted`等函数导入并调用。 需要注意用户提到的引用[1]和[2],特别是引用[2]是关于Vue3生命周期的,可能需要引用相关内容。比如在说明`beforeCreate`和`setup`的关系时,可以引用[^2]提到`beforeCreate`阶段初始化未被代理的数据。 还要确保回答结构清晰,分点说明每个钩子,并给出示例。可能需要分两部分:Options API和Composition API的用法,因为用户可能对两种方式都感兴趣。同时,要检查LaTeX格式是否正确,但用户的问题中没有数学内容,可能不需要使用。不过按照系统指令,如果有行内变量也要用$...$,但这里可能不涉及。 最后,生成相关问题,比如Vue3和Vue2生命周期的区别,组合式API的影响,常用钩子的应用场景,以及父子组件生命周期的顺序等。这些问题有助于用户进一步学习。 需要确保回答中的引用标识正确添加,例如在提到`beforeCreate`时引用[^2]。同时,避免使用Markdown格式,但用户示例中的代码块使用了```python,所以可能需要用代码块展示Vue3的示例。但根据系统级指令中的用户可见层,回答要结构清晰,所以可能需要使用代码块来展示示例代码。 总结步骤: 1. 概述Vue3生命周期钩子的变化。 2. 分点介绍每个钩子的执行时机、用途和示例。 3. 分别展示Options API和Composition API的用法。 4. 添加相关问题和引用。</think>以下是关于Vue3生命周期钩子函数的详细说明及示例: ### 一、Vue3生命周期核心变化 Vue3保留了Options API中的生命周期钩子,但有两个钩子更名: - `beforeDestroy` → `beforeUnmount` - `destroyed` → `unmounted` 同时,在Composition API中通过`onXXX`形式访问生命周期钩子[^2]。 ### 二、生命周期钩子详解 #### 1. Options API 中的钩子 | 钩子函数 | 执行时机 | 用途示例 | |-----------------|--------------------------------------------------------------------------|-----------------------------------| | `beforeCreate` | 实例初始化后,数据观测/事件配置前 | 初始化非响应式数据 | | `created` | 实例创建完成,已配置数据观测/方法计算 | 发起异步请求 | | `beforeMount` | 挂载开始前 | 操作DOM前的准备工作 | | `mounted` | 实例挂载完成 | 访问DOM元素/初始化第三方库 | | `beforeUpdate` | 数据变化后,DOM更新前 | 获取更新前的DOM状态 | | `updated` | DOM更新完成后 | 执行依赖DOM的操作 | | `beforeUnmount` | 实例卸载前 | 清理定时器/取消事件监听 | | `unmounted` | 实例卸载后 | 释放内存资源 | #### 2. Composition API 用法 ```javascript import { onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue' export default { setup() { onBeforeMount(() => { console.log('挂载前执行') }) onMounted(() => { console.log('完成挂载') }) // 其他钩子同理 } } ``` ### 三、典型应用场景 1. **数据初始化**:在`created`中发起API请求 ```javascript created() { this.loadUserData() } ``` 2. **DOM操作**:在`mounted`初始化图表库 ```javascript mounted() { this.chart = echarts.init(this.$refs.chart) } ``` 3. **资源清理**:在`beforeUnmount`清除定时器 ```javascript beforeUnmount() { clearInterval(this.timerId) } ``` ### 四、特殊钩子 `errorCaptured`:捕获子组件错误 ```javascript errorCaptured(err, instance, info) { console.error('捕获到错误:', err) return false // 阻止错误继续向上传播 } ``` : Vue3的`setup()`函数替代了Vue2的`beforeCreate`和`created`钩子,在组合式API中应优先使用`onXXX`形式的生命周期函数进行逻辑组织。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值