Vue 从入门到进阶之路(十四)

之前的文章我们对 vue 的基础用法已经有了很直观的认识,本章我们来看一下 vue 中的生命周期函数。

上图为 Vue官方为我们提供的完整的生命周期函数的流程图,下面的案例我们只是走了部分情况流程,但所有的生命周期函数都涉及到了。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>vue</title>
 6     <script src="https://cdn.jsdelivr.net/npm/vue"></script>
 7 </head>
 8 <body>
 9 <div id="app">
10     <child v-if="show"></child>
11     <button @click="handleClick">{{title}}</button>
12 </div>
13 <script>
14     Vue.component("child", {
15         beforeDestroy() {
16             console.log("beforeDestroy", this.$el);
17         },
18         destroyed() {
19             console.log("destroyed", this.$el);
20         },
21         template: `<p>我是 child 子组件</p>`,
22     });
23     var app = new Vue({
24         el: '#app',
25         data: {
26             title: "hello world",
27             show: true
28         },
29         beforeCreate() {
30             console.log("beforeCreate", this.$el);
31         },
32         created() {
33             console.log("created", this.$el);
34         },
35         beforeMount() {
36             console.log("beforeMounted", this.$el);
37         },
38         mounted() {
39             console.log("mounted", this.$el);
40         },
41         beforeUpdate() {
42             console.log("beforeUpdate", this.$el);
43         },
44         updated() {
45             console.log("updated", this.$el);
46         },
47         methods: {
48             handleClick() {
49                 this.show = !this.show;
50             }
51         }
52     })
53 </script>
54 </body>
55 </html>

从上面的代码中我们可以看出 vue 的生命周期函数有:

beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,destroyed

这几个生命周期函数的意思分别是:

  beforeCreate:组件创建前,

  created:组件创建完成,

  beforeMount:组件挂载前,

  mounted:组件挂载完成,

  beforeUpdate:组件更新前,

  updated:组件更新完成,

  beforeDestroy:组件销毁前,

  destroyed:组件成功销毁。

 

我们通过页面显示和控制台的输出日志来看一下:

当页面加载时会触发 beforeCreate,created,beforeMount,mounted 四个生命周期函数。当执行到 mounted 生命周期函数时,数据才真正挂在到 DOM 上,所以我们从后台获取到的数据可以放在 mounted 生命周期函数中,然后再挂在到 DOM 上。

当我们更改数据时会触发哪些生命周期函数呢,结果如下:

当我们改变数据中的 title 值时,触发了 beforeUpdate 和 updated 生命周期函数。

为了演示 beforeDestroy 和 destroyed 生命周期函数,我们定义了一个子组件,并通过 handleClick() 方法来控制该子组件的挂载和销毁,当我们点击按钮使组件销毁时:

因为我们将 beforeUpdate 和 updated 生命周期函数定义在了父组件上,所以当子组件销毁时也属于父组件更新的一种,所以会触发这两个函数。还触发了 beforeDestroy 和 destroyed 生命周期函数,这两个是在组件销毁时才触发的生命周期函数。

 

转载于:https://www.cnblogs.com/weijiutao/p/10684448.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 清除浮动float 嗒嘀嗒滴 ----20181120

手动给父元素添加高度通过clear清除内部和外部浮动给父元素添加overfloat属性并结合zoom:1使用给父元素添加浮动        常用方法&#xff1a; ①给兄弟元素添加clear属性&#xff1a;添加一个class为clear&#xff1a;both&#xff0c; ②添加伪类&#xff1a;.clearf…

微软最爽命令行工具发布!

最近微软发布了命令行工具Windows Terminal&#xff0c;简直要让我们爽翻天 长期以来&#xff0c;Linux和Mac下的命令行工具自成一派&#xff0c;Windows却是另一套命令系统。这就比较恶心了&#xff0c;这也是很多开发者不选择Windows系统的原因。 但是现在完全不一样了&#…

vue项目中 axios请求拦截器与取消pending请求功能 - 年少、 - 博客园

在开发vue项目中&#xff0c;请求是不可缺少的&#xff0c;在发送请求时常常需要统一处理一些请求头参数等设置与响应事件&#xff0c;这时利用请求拦截器再好不过。 这里以axios请求为例 实现了设置统一请求头添加token, 其中token在登录时被存入了localStorage中。 同时拦…

gitbook 入门教程之解决windows热加载失败问题

破镜如何贴花黄 gitbook 在 Windows 系统无法热加载,总是报错! gitbook 是一款文档编写利器,可以方便地 markdown 输出成美观优雅的 html ,gitbook serve 启动服务器后,原来相貌平平的 markdown 丑小鸭摇身一变就成了倾国倾城的 html 绝色佳人. 如果源文件发生更改,Windows 却无…

NodeJS入门04-Express路由和中间件 - 小之 - 博客园

nodeJS入门04-Express路由和中间件 Express框架是后台的Node框架&#xff0c;在后台的受欢迎的程度&#xff0c;和jQuery一样&#xff0c;就是企业的事实上的标准。 路由 路由是指如何定义应用的端点&#xff08;URIs&#xff09;以及如何响应客户端的请求。 路由是由一个 …

jmeter(四十五)常用Beanshell脚本

整理了一批jmeter常用的beanshell脚本供大家参考&#xff01; 时间戳 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; try{ Date date new Date(); //获取当前时间 SimpleDateFormat sf new SimpleDateFormat("yyyy-MM-dd HH:mm…

nodejs开发 过程中express路由与中间件的理解 - pyj063 - 博客园

nodejs开发 过程中express路由与中间件的理解 nodejs开发 express路由与中间件 路由 通常HTTP URL的格式是这样的&#xff1a; http://host[:port][path] http表示协议。 host表示主机。 port为端口&#xff0c;可选字段&#xff0c;不提供时默认为80。 path指定请求资源的…

(五)Unity插件生成

1&#xff09;新建空的AndroidStudio工程&#xff0c;但是新建过程时最小SDK版本要与unity一致&#xff0c;如下图所示&#xff0c;本次操作均为api16 2&#xff09;创建Library&#xff0c;如下图所示&#xff0c;新建module&#xff0c;然后选择Android Library。 新建模块为…

centeros7安装mysql - 风中追风_lonely - 博客园

转载自&#xff1a;https://www.linuxidc.com/Linux/2016-09/135288.htm 安装之前先安装基本环境&#xff1a;yum install -y perl perl-Module-Build net-tools autoconf libaio numactl-libs 1、配置YUM源 在MySQL官网中下载YUM源rpm安装包&#xff1a;http://dev.mysql.c…

前后端交互json字符串

//将需要的参数转成json字符串&#xff0c;然后用utf-8编码 var obj encodeURIComponent(JSON.stringify(this.categories),"utf-8") //后台将前台的json字符串按照utf-8的格式解码&#xff0c;然后进行转换 RequestMapping(value "/updateMaterialDemoInfo.d…

个人作业7 第一阶段SCRUM冲刺(七)

了解了一下云服务器&#xff0c;下载了阿里云。 然而搞了半天还是没应用上这个云服务器..转载于:https://www.cnblogs.com/jbwen/p/11071733.html

Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现 - aspirant - 博客园

最近一直搞Dcloud &#xff0c;这是HTML5版本的开发&#xff0c;打包时候&#xff0c;可以打包成 apk 和ipa 分别运行在安卓和ios 机器上面&#xff0c; 但是这里面的资料很少&#xff0c;遇到问题&#xff0c;之后只能自己钻研总结&#xff0c; 现在有这么一个需求&#xff…

Django forms组件

校验字段 模板文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form action"" method"post"><p>用户名: <…

为什么要用TypeScript - 肉猪 - 博客园

为什么要用TypeScript 以下是本人的一点拙见&#xff0c;欢迎指正。 TypeScript的设计目的应该是解决JavaScript的“痛点”&#xff1a;弱类型和没有命名空间&#xff0c;导致很难模块化&#xff0c;不适合开发大型程序。另外它还提供了一些语法糖来帮助大家更方便地实践面向…

java继承上机作业

实现如下类之间的继承关系&#xff0c;并编写Music类来测试这些类。 1 package su;2 3 class Instrument{4 public void play() {5 System.out.println("弹奏乐器");6 }7 8 public void play2() {9 // TODO 自动生成的方法存根 10 …

前端之模拟数据 - HackerVirus - 博客园

阅读目录 玩转前端之模拟数据 回到目录 玩转前端之模拟数据 博客园主页&#xff1a;http://www.cnblogs.com/handoing/ 是否还在为前端模拟数据头疼&#xff1f; 是否还在为后端返回数据格式较多内心烦躁&#xff1f; 是否还想吸一支烟压压精&#xff1f; 看下去吧&#x…

Spring Cloud Gateway(五):路由定位器 RouteLocator

本文基于 spring cloud gateway 2.0.1 1、简介 直接 获取 路 由 的 方法 是 通过 RouteLocator 接口 获取。 同样&#xff0c; 该 顶 级 接口 有多 个 实现 类&#xff0c; RouteLocator 路由定位器&#xff0c;顾名思义就是用来获取路由的方法。该路由定位器为顶级接口有多个实…

【NOIP2018】DAY2T2——填数游戏(轮廓线状压的dp?搜索打表)

描述 小 D 特别喜欢玩游戏。这一天&#xff0c;他在玩一款填数游戏。 这个填数游戏的棋盘是一个n m的矩形表格。玩家需要在表格的每个格子中填入一个数字&#xff08;数字 0 或者数字 1&#xff09;&#xff0c;填数时需要满足一些限制。 下面我们来具体描述这些限制。 为了方…

团队开发进度报告9

&#xff08;1&#xff09;站立会议 &#xff08;2&#xff09;任务面板 &#xff08;3&#xff09;具体内容 昨天&#xff1a;完成了界面控件按钮的设置问题&#xff1a;PHP数据处理&#xff0c;如何实现在线数据交互问题今天&#xff1a;hbuilder后台环境搭建 转载于:https:/…

基于springboot多模块项目使用maven命令打成war包放到服务器上运行的问题

首先&#xff0c;大家看到这个问题&#xff0c;可能并不陌生&#xff0c;而且脑子里第一映像就是使用mava中的clear package 或者 clear install进行打包&#xff0c;然后在项目中的target文件夹下面找到xxx.war&#xff0c;将这个war包放到外置的tomcat服务器下的webapps下面&…