创建阶段

1.创建一个Vue的实例

new Vue({});

2.Init Events & Lifecycle

表示刚初始化了一个Vue空的实例对象,这时候,这个对象身上只有默认的一些生命周期函数和默认的事件。其它的还没有创建。

3.beforeCreate

beforeCreate与data、methods等平级,是第一个生命周期函数。表示实例完全被创建出来之前,会执行该函数

var vm=new Vue({

el:"#app",

data:{

msg:'hello'

},

methods:{

show(){

console.log('show()');

}

},

beforeCreate() {

console.log(this.msg);//undefined

this.show(); //TypeError:this.show is not a function

}

})

由上可知,在beforeCreate生命周期执行的时候,data和methods中的数据都还没有初始化。

4.Init injections & reactivity

初始化data和methods。

5.created

这是第二个生命周期函数

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

created() {

console.log(this.msg);//'hello'

this.show();//'show()'

}

})

如果要调用methods中的方法或者操作data中的数据,最早只能在created中去操作

6.判断流程图

表示Vue开始编译模板,把Vue代码中的指令进行执行,最终在内存中生成一个编译好的最终模板字符串。然后把这个模板字符串渲染为内存中的DOM。此时,只是在内存中,渲染好了模板,并没有把模板挂载到真正的页面中去

7.beforeMount

这是第三个生命周期函数,表示模板已经在内存中编译完成,但尚未把模板渲染到页面中。

{{msg}}

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

beforeMount() {

console.log(document.getElementById("h3").innerText);//{{msg}}

}

})

在beforeMount执行的时候,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符串。创建vm.$el并替换掉'el'这一步,将内存中编译好的模板,真实地替换到浏览器的页面中去。

8.mounted

表示内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面了

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

mounted() {

console.log(document.getElementById("h3").innerText);//'hello'

}

})

mounted是实例创建期间的最后一个生命周期函数。当执行完mounted就表示,实例已经完全创建好了,此时若没有其它操作,这个实例就静静地躺在我们的内存中一动不动。此时组件脱离创建阶段进入运行阶段。

运行阶段

1.beforeUpdate

当且仅当data被修改时才触发这个生命周期函数,但此时仅仅是数据被修改,页面还未更新。

{{msg}}

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

beforeUpdate() {

console.log('界面上的元素的内容:'+document.getElementById("h3").innerText);//hello

console.log('data中的数据:'+this.msg);//hello world

}

})

2.更新虚拟DOM

根据data中的数据,在内存中重新渲染出一份虚拟DOM,当最新的内存DOM树被更新之后,会把最新的内存DOM树,重新渲染到真实的页面中去,此时完成数据从data(model层)->view(视图层)的更新

3.updated

Updated() {

console.log('界面上的元素的内容:'+document.getElementById("h3").innerText);//hello world

console.log('data中的数据:'+this.msg);//hello world

}

此时的data数据和页面已完成同步

销毁阶段

beforeDestory 和 destoryed

当执行beforeDestory钩子函数的时候,Vue实例就已经从运行阶段,进入到了销毁阶段。

当执行beforeDestory的时候,实例身上所有的data和所有的methods,以及过滤器、指令...都处于可用状态,此时还没有真正执行销毁过程。

当执行到destoryed函数的时候,组件已经被全部销毁了,data与methods均不可用。

vue 声明周期函数_Vue_生命周期函数相关推荐

  1. 五十七、Vue中的八大生命周期函数

    @Author:Runsen @Date:2020/10/15 什么是vue生命周期 Vue 实例从创建到销毁的过程,就是生命周期.也就是从开始创建.初始化数据.编译模板.挂载DOM-渲染.更新-渲染 ...

  2. Vue 页面如何利用生命周期函数监听用户预览时长

    最近的业务中涉及到这样一个需求,在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长.初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed,分别在其中加 ...

  3. Vue组件嵌套时生命周期函数触发顺序是什么?

    使用过Vue的大家,对于生命周期一定都很熟悉,在官方文档一开始,就给我们介绍了Vue的生命周期有哪些,是怎么样的顺序.这个难不倒大家. 但如果是问当组件嵌套时,父子组件的生命周期函数触发的顺序是什么样 ...

  4. Vue.js中的生命周期函数

    1. 组件创建阶段: beforeCreate(),这是我们遇到的第一个生命周期函数.表示实例被完全创建出来之前,会执行这个生命周期函数. created(),这是遇到的第二个生命周期函数. befo ...

  5. Vue的几个生命周期函数

    什么是生命周期和生命周期函数 生命周期是指一个组件从创建->运行->销毁的整个阶段,强调的是时间段. 生命周期函数是由Vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行. 注 ...

  6. 细说vue钩子函数(生命周期函数)

    一.概述 钩子函数用来描述一个组件从引入到退出的全过程中的某个过程,整个过程称为生命周期. 钩子函数按照组件生命周期的过程分为:挂载阶段=>更新阶段=>销毁阶段. 二.每个阶段对应的钩子函 ...

  7. vue——路由独有的生命周期函数 activated deactivated

    activated:路由组件被激活时触发 deactivated:路由组件失活时触发 当 使用了 <keep-alive> </keep-alive>之后跳转到其他组件时,之前 ...

  8. vue声明周期_Vue生命周期的理解

    当面试官问:"谈谈你对vue的生命周期的理解",听到这句话你是不是心里暗自窃喜:这也太容易了吧,不就是beforeCreate.created.beforeMount.mounte ...

  9. vue生命周期函数、react生命周期函数、微信小程序生命周期函数、uni-app生命周期函数,简介及图示

    vue生命周期函数 beforeCreate (创建前) created (创建后) beforeMount (挂载前) mounted (挂载后) beforeUpdate (数据更新前) upda ...

最新文章

  1. iOS LaunchScreen和LaunchImage的转换启动图
  2. springmvc教程--RESTful支持详解
  3. scss2css vscode设置_VSCode下让CSS文件完美支持SCSS或SASS语法方法
  4. 新研究:长寿又健康的秘诀
  5. C/C++ strtod函数 - C语言零基础入门教程
  6. 截图截取各种右键菜单的方法
  7. android 移除泛型中元素_最新(2020)Android高级面试知识点干货分享(二)
  8. html 移动app开发
  9. 符号级别(二)--实际应用
  10. mysql数据库优化经验_MySQL数据库优化经验详谈
  11. 网易云API微信小程序
  12. ipad分屏功能怎么开启_win10录屏功能怎么开启
  13. hdoj2602 0/1背包 动态规划 模版题( Java版)
  14. 为什么Transformer适合做多模态任务?
  15. PHP方法,传入的参数前带三个点是什么意思?
  16. 抓取百度搜狗相关搜索、筛选文本相似度最高的相关搜索(PHP)
  17. 解决 Jupyter notebook 运行SHELL 命令(!xxx), 出错: OSError: “/bin/bach“ shell not found
  18. 猫喜欢吃鱼,可猫不会游泳
  19. 调试热释电传感器(BISS0001电路)中遇到的问题
  20. 产品经理和软件工程师的职能划分

热门文章

  1. IBASE change related BDOC generation
  2. 如何手动删除一个business document和pricing document的relationship
  3. 如何从ERP将Material的Batch信息下载到CRM
  4. java本地可以发到linux不行,java 使用 ftp 在windows环境下可以正常下载文件,在linux环境下不行...
  5. python读取大文件内容_Python模块linecache处理大文件
  6. nginx怎么处理php,nginx如何处理请求
  7. 为什么开源的代码没有注释_代码注释那些事儿
  8. 螺旋矩阵 IIPython解法
  9. 地理信息系统论坛_高端论坛西南交通大学朱庆教授:应急测绘智能服务关键技术及重大应用...
  10. Linux非系统盘挂载,[转载] Linux mount 挂载分区、硬盘