Vue的系列之详解生命周期
生命周期介绍
简单说就是一个组件从开始到最后消亡所经历的各种状态,就是一个组件的生命周期
vue的生命周期图
beforeCreate(创建前)
beforeCreate(初始化页面前)
详情:实例初始化之后,组件被创建时,这时候 el,data,message 都是 underfined
场景:可以加入 loading 事件;在服务器端的应用场景中,这个时候发送数据请求比较多一些
created(创建后)
created(初始化界面后)
详情:实例创建完成后,data、methods 被初始化
场景:结束 loading 事件;推荐这个时候发送请求数据,尤其是返回的数据与绑定事件有关时
beforeMount(载入前)
beforeMount(渲染dom前)
详情:完成el和data初始化,在挂载开始之前被调用
场景:可以发送数据请求
注意:在服务器端渲染期间不会被调用
mounted(载入后)
mounted(渲染dom后)
详情:vue实例已经挂载到页面中
场景:获取 el 中 DOM 元素,进行 DOM 操作;如果返回的数据操作依赖 DOM 完成,推荐这个时候发送数据请求
注意:在服务器端渲染期间不会被调用
beforeUpdate(更新前)
beforeUpadated(更新数据前)
详情:数据更新时调用
场景:挂载完成之前访问现有DOM,比如手动移除已添加的事件监听器;也可以进一步修改数据
注意:在服务器渲染期间不会被调用,只有初次渲染会在服务端调用
updated(更新后)
updated(更新数据后)
详情:由于数据更改,重新渲染时调用
场景:可执行依赖与DOM的操作
注意:服务器端渲染期间不会被调用
beforeDestory(销毁前)
beforeDestory(卸载组件前)
详情:实例销毁之前调用
场景:实例销毁之前,执行清理任务,比如:清除定时器等
注意:服务器端渲染期间不会被调用
destoryed(销毁后)
destroyed(卸载组件后)
详情:vue实例销毁后调用。调用后,Vue实例指示的所有东西都会被解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁
场景:提示已删除
注意:服务器端渲染期间不会被调用
生命周期代码的执行效果
<!DOCTYPE html>
<html>
<head><title></title><meta charset="UTF-8"><script type="text/javascript" src="https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>
</head>
<body><div id="app"><p>{{ message }}</p><button v-on:click="change()">change</button><button v-on:click="destroy()">destroy</button>
</div><script type="text/javascript">var app = new Vue({el: '#app',data: {message: 18},beforeCreate: function () {console.group('beforeCreate 创建前');console.log("el: " + this.$el);console.log("data: " + this.$data);console.log("message: " + this.message)},created: function () {console.group('created 创建完毕');console.log("el: " + this.$el);console.log("data: " + this.$data + JSON.stringify(this.$data));console.log("message: " + this.message)},beforeMount: function () {console.group('beforeMount 挂载前');console.log("el: " + this.$el);console.log("data: " + this.$data);console.log("message: " + this.message)},mounted: function () {console.group('mounted 挂载结束');console.log("el: " + this.$el);console.log("data: " + this.$data);console.log("message: " + this.message)},beforeUpdate: function () {console.group('beforeUpdate 更新前');console.log("el: " + this.$el);console.log("data: " + this.$data);console.log("message: " + this.message)},updated: function () {console.group('updated 更新完成');console.log("el: " + this.$el);console.log("data: " + this.$data);console.log("message: " + this.message)},beforeDestroy: function () {console.group('beforeDestroy 销毁前');console.log("el: " + this.$el);console.log("data: " + this.$data);console.log("message: " + this.message)},destroyed: function () {console.group('destroyed 销毁完成');console.log("el: " + this.$el);console.log("data: " + this.$data);console.log("message: " + this.message)},methods: {change() {app.message++;},destroy() {app.$destroy();}}})
</script>
</body>
</html>
页面运行效果
点击change的效果
点击destroy的效果
最后
如果本文对你有帮助得话,给本文点个赞❤️❤️❤️
欢迎大家加入,一起学习前端,共同进步!
Vue的系列之详解生命周期相关推荐
- Vue2.和Vue3.生命周期的区别,对比。 详解生命周期中的每个钩子函数,setup,
文章目录 #1.Vue2.的生命周期与Vue3.的生命周期对比图 #1.1白色背景图是Vue2.的生命周期,黑色背景图是Vue3.的生命周期. #2.Vue2.与Vue3.的生命周期函数的不同 #2. ...
- Vue Router系列之详解路由守卫
文章の目录 1.路由守卫是什么 2.导航守卫分类 2.1.全局守卫 2.1.1.全局前置守卫beforeEach 2.1.2.全局解析守卫beforeResolve(2.5.0 新增) 2.1.3.全 ...
- Pod详解-生命周期-钩子函数
钩子函数能够感知自身生命周期中的事件,并在相应的时刻到来时运行用户指定的程序代码. kubernetes在主容器的启动之后和停止之前提供了两个钩子函数: post start:容器创建之后执行,如果失 ...
- Pod详解-生命周期-概述
我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程: pod创建过程 运行初始化容器(init container)过程 运行主容器(main container) ...
- 微信小程序开发之详解生命周期方法
生命周期是指一个小程序从创建到销毁的一系列过程 在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面 先来看一张小程序项目结构 根目录下面有包含了app.js,app.wxs ...
- Pod详解-生命周期-容器探测
容器探测用于检测容器中的应用实例是否正常工作,是保障业务可用性的一种传统机制.如果经过探测,实例的状态不符合预期,那么kubernetes就会把该问题实例" 摘除 ",不承担业务流 ...
- Pod详解-生命周期-创建和终止
pod的创建过程 用户通过kubectl或其他api客户端提交需要创建的pod信息给apiServer apiServer开始生成pod对象的信息,并将信息存入etcd,然后返回确认信息至客户端 ap ...
- 实例化vue发生了什么?(详解vue生命周期)
实例化vue发生了什么?(详解vue生命周期) 本文将对vue的生命周期进行详细的讲解,让你了解一个vue实例的诞生都经历了什么~ 我在Github上建立了一个存放vue笔记的仓库,以后会陆续更新一些 ...
- ABP VNext系列(二)-详解ABP的依赖注入
ABP VNext系列(二)-详解ABP的依赖注入 上一篇 : ABP VNext系列(一)-第一个ABP VNext 目录 ABP VNext系列(二)-详解ABP的依赖注入 一.什么是依赖注入 1 ...
最新文章
- Teamviewer连接服务器显示不能够全屏 或 向日葵连接服务器不能够全屏 或 Teamviewer只显示一个640x480的分辨率选项
- 鸿蒙系统是单任务还是多任务,在鸿蒙系统上使用MQTT编程
- 【绝迹篇】C#RSA算法实现
- Kafka科普系列 | 什么是LSO?
- python基础知识点制作图片
- 基于 Flink + ClickHouse 打造轻量级点击流实时数仓
- 因为爬虫失控,CTO和程序员双双被判刑
- windows 安装mongodb
- 修改mysql数据库默认存储引擎和默认编码
- Java递归一个四十万的树结构_java递归展示树形图代码实现以及遇到的问题
- 你绝对想不到,会Linux的程序员,到底有多吃香!
- 写直通与访存次数计算问题
- python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典
- 《那些年啊,那些事——一个程序员的奋斗史》八
- 开源网站GitHub把自己给开源了
- linux下的定时任务
- 老版本微信平台服务器部署步骤(没那么坑版)
- 4-20mA无源两线制温度热电阻环路供电信号变送器
- 今天,祝51CTO生日快乐
- CPU性能篇-CPU使用率