何为钩子函数?先看官方文档的说法:

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

简单点来说,钩子函数就是你创建的Vue在初始化、更新数据、销毁时会被自动调用的函数。

八大钩子数分别是:

beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestory,destoryed

接下来咱们慢慢来说

附官网声明周期图

先执行一段代码:注意这里的钩子名固定,与data和methods属于平级关系,如果执行相应的方法,会输出一句话

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="http://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body><div id="app"></div><script>var vm=new Vue({el: "#app",data: {},beforeCreate() {console.log("beforeCreate")},created() {console.log("created")},beforeMount() {console.log("beforeMount")},mounted() {console.log("mounted")},beforeUpdate() {console.log("beforeUpdate")},updated() {console.log("updated")},beforeDestroy() {console.log("beforeDestroy")},destroyed() {console.log("destroyed")},methods: {}});</script>
</body>
<html>

运行结果如下:

一、beforeCreate,created

beforeCreate可以简单的理解为在数据初始化的之前被调用,这时候data和methods尚未没有数据

created可以理解为在数据初始化之后被调用,这时候data和methods已经被填充了相应的数据

实验测试:(篇幅所限,只贴出来body中代码,head中代码没变化)

<body><div id="app"></div><script>var vm=new Vue({el: "#app",data: {msg:"在这之间"       //添加msg数据},beforeCreate() {console.log("this= "+this)  console.log("this.msg= "+this.msg)console.log("this.md= "+this.md)console.log("")},created() {console.log("this= "+this)  console.log("this.msg= "+this.msg)console.log("this.md= "+this.md)              console.log("")},methods: {md: function(){},        //空方法}});</script>
</body>

运行结果如下:

结果显示在beforeCreate方法与create方法之间完成了资源的注入。

二、beforeMount,mounted

上面实验已经证明Vue中数据已经注入完毕,beforeMount,mounted则是与页面渲染有关

beforeMount在页面尚未被渲染时使用,也就是Vue的数据没有传到页面。

mounted在页面渲染完成之后使用,也就是此时页面已完全取出Vue中的数据。

实验测试:

<body><div id="app"><h1 id="ren">{{msg}}</h1></div><script>var vm=new Vue({el: "#app",data: {msg:"在这之间"       //添加msg数据},beforeMount() {let doc = document.querySelector("#ren");//查询到id名为ren的节点console.log(doc)   console.log("")},mounted() {let doc = document.querySelector("#ren");console.log(doc)   },});</script>
</body>

结果如下:

此时,Vue对象中资源已注入完毕,页面也已经渲染完毕,上述四个方法在页面被加载时自动被执行

三、beforeUpdate,updated

beforeUpdate在页面更新渲染完成后,DOM树发生改变前被调用

updated在页面DOM树改变后被调用

需要注意的是如果只是改变了dom中的数据(data),未对页面造成任何影响,就不会触发beforeUpdate,updated方法。

实验证明:

<body><div id="app"><h1 id="ren"><p v-if="msg"></p></h1></div><script>var vm=new Vue({el: "#app",data: {msg:true       //添加msg数据},beforeUpdate() {let a = document.getElementById("ren"); console.log(a.childElementCount)console.log("")},updated() {let a = document.getElementById("ren"); console.log(a.childElementCount)},});</script>
</body>

结果显示:

四、beforeDestory,destoryed

beforeDestory是在Vue组件销毁之前被调用

destoryed在Vue组件销毁之后被调用

这里为了搭建环境,引入了组件的概念(注意由于解析时自上而下,所以组件写在Vue对象前

实验证明:

<body><div id="app"><mytest id="child" v-if="flag"></mytest></div><script>let myname = Vue.component('mytest', {template: '<p>yes</p>',beforeDestroy() {console.log("beforeDestroy被执行")},destroyed() {console.log("destroyed被执行")},});var vm=new Vue({el: "#app",data: {flag: true},components:{"mytest" : myname,},});</script>
</body>

一次性搞懂Vue生命周期的八大钩子函数相关推荐

  1. vue生命周期方法(钩子函数)初始化数据一般写在哪里

    created(el没有初始化,数据已加载完成):mounted(el没有初始化,数据已加载完成): mounted(el没有初始化,数据已加载完成):mounted(el已被初始化,数据已加载完成) ...

  2. vue函数如何调用其他函数?_从源码中学Vue(一)生命周期中的钩子函数的那点事儿...

    欢迎来到我的<从源码中学Vue>专题系列文章,更多精彩内容持续更新中,欢迎关注 :) Vue作为当下前端最流行的框架之一,在国内占绝对的优势.所以接下来我们一起来学习它吧! 我不会像其它人 ...

  3. 生命周期共有那几个阶段_一文搞懂ReactNative生命周期的进化

    前言 React 15生命周期函数 Mounting阶段:组件初始化渲染 Updating阶段:组件更新 Unmounting阶段:组件卸载 进化:React 16生命周期函数 Mounting阶段: ...

  4. vue.js框架的生命周期:常用钩子函数

    //组件实例化之前执行的函数 beforeCreate:function () { alert("组件实例化之前执行的函数") }, //组件实例化完毕执行的函数 created: ...

  5. vue生命周期中,钩子函数执行顺序

    1. 流程图 2.一般的执行顺序(从上往下): beforeCreate 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用. created ...

  6. 一文带你搞懂vue中的this.$nextTick

    文章目录 1.Vue.nextTick(callback) 使用原理 2.created和mounted对比 3.例子说明 4.实际遇到的问题:vue项目中 elementUI 中表格多选框默认选中, ...

  7. Vue 生命周期钩子

    Vue 实例中的生命周期钩子 Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务 处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个V ...

  8. Vue 生命周期篇探索-第三篇:生命周期-更新流程

    文章目录 探索学习 Vue 生命周期篇 第三篇:生命周期-更新流程 生命周期-更新流程 1. mounted(挂载后) 2. beforeUpdate (更新前) 3. Virtual DOM re- ...

  9. vue 声明周期函数_【Vue】详解Vue生命周期

    Vue实例的生命周期全过程(图) (这里的红边圆角矩形内的都是对应的Vue实例的钩子函数) 在beforeCreate和created钩子函数间的生命周期 在beforeCreate和created之 ...

最新文章

  1. Android权限处理分类
  2. 快速排序python实现
  3. SQL联合查询中的关键语法
  4. layui selec下的option出现之前的渲染
  5. python文字识别库_python做文字识别一行代码都不用!
  6. 用python画大白_[Python][可视化]matplotlib基础入门
  7. Spring Boot的启动器Starter详解
  8. [2018-2019上] 第一次过程性考核成绩
  9. Maven阿里云与本地仓库配置
  10. js 数字递增递减_js验证连续两位数字递增或递减和连续三位数字相同
  11. 广义表的长度和深度怎么算_最新详细个人所得税税率表!快看最新个人所得税怎么算!...
  12. 江苏计算机职称考试cad,江苏省职称计算机考试Auto_CAD(含答案).doc
  13. TensorFlow 学习可视化 TensorBoard 简易教程
  14. 互联网常用系统监控工具
  15. win10北通手柄没反应_win10 游戏手柄,win10游戏手柄没反应
  16. 已测试:网上大神写的快手极速版脚本,autojs版快手极速版自动脚本下载
  17. 月薪过万的前端工程师的自我修养
  18. 如何在android studio中调用mumu模拟器
  19. 重装Linux系统后的软件安装 及 常见操作_持续更新...
  20. IP地址管理(IPAM)解决方案有哪些?

热门文章

  1. 在线检测笔记本电脑屏幕坏点
  2. 基于jsp+servlet实现的银行管理系统
  3. 谷歌商店应用上架最新流程!Googleplay 上架流程(2023版)
  4. 庄子 内篇 大宗师第六
  5. springboot+vue汽车租赁系统设计60902
  6. 使用js来实现分页功能
  7. 增加字段sql,SQL语句增加列、修改列、删除列
  8. 计算机毕业设计SSM电商后台管理系统【附源码数据库】
  9. 冒泡排序(代码+解析)
  10. python使用statsmodels包中的tsa.acf函数计算时间序列数据所有滞后位置个数(级别)的自相关性、tsaplots函数可视化时间序列数据所有滞后位置个数(级别)的自相关性