生命周期介绍

简单说就是一个组件从开始到最后消亡所经历的各种状态,就是一个组件的生命周期

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的系列之详解生命周期相关推荐

  1. Vue2.和Vue3.生命周期的区别,对比。 详解生命周期中的每个钩子函数,setup,

    文章目录 #1.Vue2.的生命周期与Vue3.的生命周期对比图 #1.1白色背景图是Vue2.的生命周期,黑色背景图是Vue3.的生命周期. #2.Vue2.与Vue3.的生命周期函数的不同 #2. ...

  2. Vue Router系列之详解路由守卫

    文章の目录 1.路由守卫是什么 2.导航守卫分类 2.1.全局守卫 2.1.1.全局前置守卫beforeEach 2.1.2.全局解析守卫beforeResolve(2.5.0 新增) 2.1.3.全 ...

  3. Pod详解-生命周期-钩子函数

    钩子函数能够感知自身生命周期中的事件,并在相应的时刻到来时运行用户指定的程序代码. kubernetes在主容器的启动之后和停止之前提供了两个钩子函数: post start:容器创建之后执行,如果失 ...

  4. Pod详解-生命周期-概述

    我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程: pod创建过程 运行初始化容器(init container)过程 运行主容器(main container) ...

  5. 微信小程序开发之详解生命周期方法

    生命周期是指一个小程序从创建到销毁的一系列过程 在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面 先来看一张小程序项目结构 根目录下面有包含了app.js,app.wxs ...

  6. Pod详解-生命周期-容器探测

    容器探测用于检测容器中的应用实例是否正常工作,是保障业务可用性的一种传统机制.如果经过探测,实例的状态不符合预期,那么kubernetes就会把该问题实例" 摘除 ",不承担业务流 ...

  7. Pod详解-生命周期-创建和终止

    pod的创建过程 用户通过kubectl或其他api客户端提交需要创建的pod信息给apiServer apiServer开始生成pod对象的信息,并将信息存入etcd,然后返回确认信息至客户端 ap ...

  8. 实例化vue发生了什么?(详解vue生命周期)

    实例化vue发生了什么?(详解vue生命周期) 本文将对vue的生命周期进行详细的讲解,让你了解一个vue实例的诞生都经历了什么~ 我在Github上建立了一个存放vue笔记的仓库,以后会陆续更新一些 ...

  9. ABP VNext系列(二)-详解ABP的依赖注入

    ABP VNext系列(二)-详解ABP的依赖注入 上一篇 : ABP VNext系列(一)-第一个ABP VNext 目录 ABP VNext系列(二)-详解ABP的依赖注入 一.什么是依赖注入 1 ...

最新文章

  1. Teamviewer连接服务器显示不能够全屏 或 向日葵连接服务器不能够全屏 或 Teamviewer只显示一个640x480的分辨率选项
  2. 鸿蒙系统是单任务还是多任务,在鸿蒙系统上使用MQTT编程
  3. 【绝迹篇】C#RSA算法实现
  4. Kafka科普系列 | 什么是LSO?
  5. python基础知识点制作图片
  6. 基于 Flink + ClickHouse 打造轻量级点击流实时数仓
  7. 因为爬虫失控,CTO和程序员双双被判刑
  8. windows 安装mongodb
  9. 修改mysql数据库默认存储引擎和默认编码
  10. Java递归一个四十万的树结构_java递归展示树形图代码实现以及遇到的问题
  11. 你绝对想不到,会Linux的程序员,到底有多吃香!
  12. 写直通与访存次数计算问题
  13. python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典
  14. 《那些年啊,那些事——一个程序员的奋斗史》八
  15. 开源网站GitHub把自己给开源了
  16. linux下的定时任务
  17. 老版本微信平台服务器部署步骤(没那么坑版)
  18. 4-20mA无源两线制温度热电阻环路供电信号变送器
  19. 今天,祝51CTO生日快乐
  20. CPU性能篇-CPU使用率

热门文章

  1. 20201125英语单词学习(仅供自己记录)
  2. 淘宝推流地址如何获取?抖音推流地址如何获取?技术干货(2020-12-29)
  3. QCheckBox互斥
  4. 异步请求和同步请求的区别
  5. java程序员买mac还是pc_Java程序猿,买macbook pro2020款13寸还是2019款16寸?
  6. matlab解kmv方程,[求助]MatLab与KMV
  7. 【独家】华为OD机试提供C语言题解 - 字母计数
  8. Python学习笔记之编码问题 unicode、encode、decode
  9. 算法设计与分析: 5-27 部落卫队问题
  10. 360兼容模式出现乱码问题