【Vue】Vue的生命周期
Vue的生命周期指的是 Vue 实例从创建到销毁的整个过程。这个过程可以分为以下几个阶段:
1. 创建前阶段 (beforeCreate):
在实例初始化后执行,此时的数据监听和事件绑定机制都未完成,因此无法访问DOM节点。
说明:在这个阶段,数据是获取不到的,并且真实dom元素也是没有渲染出来的
2. 创建后阶段 (created):
Vue实例已经创建,数据侦听、计算属性、方法、事件/侦听器的回调函数已配置完毕,但挂载阶段还没开始,仍然无法获取到DOM元素。适合进行异步请求等操作。
说明:在这个阶段,可以访问到数据了,但是页面当中真实dom节点还是没有渲染出来,在这个钩子函数里面,可以进行相关初始化事件的绑定、发送请求操作
3. 挂载前阶段 (beforeMount):
完成了DOM的初始化,但仍然无法获取到具体的DOM元素,因为Vue还没有进行根节点挂载。这个阶段是过渡性的,在项目中使用得比较少。
说明:代表dom马上就要被渲染出来了,但是却还没有真正的渲染出来,这个钩子函数与created钩子函数用法基本一致,可以进行相关初始化事件的绑定、发送ajax操作
4. 挂载后阶段 (mounted):
实例已经被挂载完成了,可以获取到数据和DOM元素了。在这个阶段,视图的数据和DOM元素的数据已经保持同步。
说明:mounted 不会保证所有的子组件也都被挂载完成。如果你希望等到整个视图都渲染完毕再执行某些操作,可以在 mounted 内部使用 vm.$nextTick。
挂载阶段的最后一个钩子函数,数据挂载完毕,真实dom元素也已经渲染完成了,这个钩子函数内部可以做一些实例化相关的操作
5. 更新前阶段 (beforeUpdate):
在数据发生改变,但页面还没有完成更新时执行的操作。适合在现有DOM将要被更新之前访问它。
说明:这个钩子函数初始化的不会执行,当组件挂载完毕的时候,并且当数据改变的时候,才会立马执行,这个钩子函数获取dom的内容是更新之前的内容
6. 更新后阶段 (updated):
当实例的内容被更新以后,渲染完毕页面会执行这个钩子函数。
说明:这个钩子函数获取dom的内容是更新之后的内容生成新的虚拟dom,新的虚拟dom与之前的虚拟dom进行比对,差异之后,就会进行真实dom渲染。在updated钩子函数里面就可以获取到因diff算法比较差异得出来的真实dom渲染了。
7. 销毁前阶段 (beforeDestroy):
准备销毁当前实例之前执行的操作。在这个阶段,data和methods方法都能用,但还没有完全销毁。
说明:当组件销毁的时候,就会触发这个钩子函数代表销毁之前,可以做一些善后操作,可以清除一些初始化事件、定时器相关的东西。
8. 销毁后阶段 (destroyed):
当销毁完毕这个实例了,那么会执行一遍这个钩子函数,然后整个Vue生命周期结束。在这个阶段,所有的东西已经解绑。
说明:Vue实例失去活性,完全丧失功能
在Vue的生命周期中,我们可以使用生命周期钩子函数来定义在特定时候执行的代码。这些钩子函数会自动绑定this上下文到实例中,因此不能使用箭头函数来定义生命周期方法,以避免this指向的问题。
<template> <div id="app"> <p id="box">{{msg}}</p> <button @click="change">更新</button> </div> </template> <script> export default { data () { return { msg: 'hello' } }, methods: { change () { this.msg = 'hello world' } }, beforeCreate () { console.log('---------------->beforeCreate') console.log(this.msg, document.getElementById('box')) }, created () { console.log('---------------->created') console.log(this.msg, document.getElementById('box')) }, beforeMount () { console.log('---------------->beforeMount') console.log(this.msg, document.getElementById('box')) }, mounted () { console.log('---------------->mounted') console.log(this.msg, document.getElementById('box')) }, beforeUpdate () { console.log('---------------->beforeUpdate') console.log(this.$el.innerHTML) console.log(this.msg, document.getElementById('box')) }, updated () { console.log('---------------->updated') console.log(this.$el.innerHTML) console.log(this.msg, document.getElementById('box')) } } </script>
当数据改变之后又会触发beforeUpdate,updated两个钩子函数
猜你喜欢
- 【Vue】vue创建应用并运行
- 简介Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。Vue 是一个框架,也是一个生态。其功能覆盖了大部分前端开发常见的需求。但 Web 世界是十分多样化的,不同的开发者在 Web 上构建的东西可能在形式和规模上会有很大的不同。考虑到这一点,Vue 的设计非常注重灵活性和
- 【Vue】Vue常用框架介绍
- 现在的应用基本都是前后端分离,在国内,Vue相对来说更受欢迎一些,我们很多后端系统的前端都是Vue来开发的。那么Vue UI框架就显得尤为重要。Vue UI框架提供了一套丰富的用户界面组件及完整的前端UI解决方案,如按钮、表单、导航、布局等,使得开发者可以专注于业务逻辑开发,而不用从零构建这些常用的界面元素,帮助开发者更快速地构建高质量的用户界面。那么,都有哪些开源的UI框架呢?Element UIElement UI是一套为开发者、设计师和产品经理准备的基于Vue 2.0的组件库,提供了丰富的
- 【Vue】Vue3 开发实战分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 实战)以及 el-table 与 el-pagination 的深入使用(上)
- 文章目录📋前言🎯关于 Print.js🧩PDF 打印🧩网页(HTML)打印🧩图像打印🧩JSON 打印🧩下载并安装使用🧩相关配置🎯 Vue3 中使用 Print.js 实战🎯Vue3 + Nodejs + Print.js 模拟打印实战案例🧩启动 Nodejs 服务🧩启动 Vue 项目📝最后📋前言今天久违的更新一下关于 Vue 的文章了,本篇文章是基于 Vue3 + Node.js + ElementPlus 的实战项目分享,实战内容包括有打印插件 Print.js 的
- 【Vue】vue中的$set的作用
- $set 的作用是响应式地设置对象或数组的属性,确保更改被 vue.js 追踪和更新,从而触发视图重新渲染。其用法包括:vue.set(target, key, value),适用于直接赋值不起作用、添加或删除对象或数组属性的情况。Vue.js 中 $set 的作用$set 是 Vue.js 中一个用于响应式地设置对象或数组属性的函数。它的主要作用是确保对对象或数组的更改能够被 Vue.js 追踪和更新,从而触发视图的重新渲染。如何使用 $set$set 函数有以下用法:Vue.set(targ
- 【Vue】vue2vue3项目使用antd
- 前言项目研发需要,已经用了两年的ant design pro(react),因为会的人比较少,更多的人在使用vue,所以新项目决定使用antd vue来开发,好在比较熟悉了ant design组件的使用,也算是有一些基础。ant design 官网https://ant.design/index-cnantd vue 官网https://www.antdv.com/components/overview-cn 当前版本V4.1.2vue2项目-引入antd参考:https://www.antdv
- 【Vue】前端框架 Vue3框架 使用总结(一) Vue框架的基础使用
- 目录一、Vue3框架基础1、创建项目2、项目结构3、Vue基础语法4、组件之间通信5、组合式api二、VueRouter的基础使用1、安装2、使用案例3、完整案例步骤4、调优-路由懒加载三、Vuex数据管理1、实现案例 2、更改store状态,同步操作3、store中的计算属性4、redux里的异步操作Action5、模块化管理四、网络请求Vue3官方文档:Vue.js - 渐进式 JavaScript 框架 | Vue.js基础部分见官方文档一、Vue3框架基础1、创建项目安装yar
- 【Vue】Antd Pro Vue的使用(二)—— 全局配置及登录
- 1. 默认语言设置 Antd Pro Vue安装好之后,默认使用的是英文,我们需要把它设置为中文简体。找到/src/core/bootstrap.js文件,把最后一行 en-US 修改为 zh-CN,然后一定要清除浏览器缓存,修改才能生效修改后修改后的页面2. 请求服务端接口Antd Pro Vue封装好的有请求方法,在/src/api/文件夹,我们把自己的接口写到这里面就可以任意调用。Antd Pro Vue安装好之后,默认使用的是mock数据,我们要使用自己的接口,要把mock去掉
- 【Vue】vue中destroy应用于什么场景
- vue 中 destroy 方法用于销毁 vue 实例,释放其资源,应用场景有:组件销毁;页面路由切换;手动释放资源;避免内存泄漏。Vue 中 destroy 的应用场景Vue 中的 destroy 方法用于销毁一个 Vue 实例,释放其占用的资源。以下是一些常见的 destroy 应用场景:1. 组件销毁当一个组件不再需要时,可以使用 destroy 方法将其销毁,例如:this.$destroy();登录后复制2. 页面路由切换当页面路由切换时,旧的 Vue 实例需要被销毁,以释放其资源。可