【Vue.js 入门与实战】--生命周期函数-组件创建期间的4个钩子函数

简介: 一、Vue实例的生命周期二、Vue实例

生命周期函数-组件创建期间的4个钩子函数

 

目录

一、Vue实例的生命周期

二、Vue实例

 

一、Vue实例的生命周期

1.Vue实例的生命周期

http//cn.vuejs.org/v2/guide/instance.html#生命周期实例)从Vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期。

2.生命周期钩子:

http//cn.vuejs.org/v2/api#选项-生命周期钩子)是生命周期事件的别名。

生命周期钩子=生命周期函数=生命周期事件

3.主要的生命周期函数分类:

创建期间的生命周期函数:

beforeCreate created beforeMount mounted.

运行期间的生命周期函数:

beforeUpdate updated.

销毁期间的生命周期函数:

beforeDestroy destroyed.

 

二、Vue实例

image.png

在上图中,


1.New vue() :

varvm=new vue({}) 表示开始创建一个 Vue 的实例对象

2.  Init events&Lifecycle:

代表初始化了一个空的实例对象,这个对象身上,只有默认的一些生命周期函数和默认的事件,其他的东西都未创建。此时会进如beforecreate() 这个第一个生命周期函数。

代码实例:(生命周期函数演示)

Var vm = new Vue{{

el:’#app’

data:{

msg:’ok’

}

Methods:{

show(){

console.log(‘执行了 show 方法’)

}

}

Beforecreate(){

//这是遇到的第一个生命周期函数,表示实例完全被创建出来之前,会执行它。

console.log(this.msg)

这样写在语法层面上,没有任何问题,但此时如果右键游览检查,会显示:undefined

image.png

在这个生命周期函数执行时,无法拿到 date 数据,这证明 date 的数据还没有初始化

//console.log(this.msg)

this.show()

此时如果右键游览检查,会显示: this.show is not a fuction

image.png

此时证明methods 的数据还没有初始化

所以我们可以得出结论,注意:在 befozeCreate 生命周期函数执行的时,data methods 中的数据都还没有没初始化。

3.  Initinjections & reactivity

这步之后 methods 里的方法和 data里的数据已经被初始化。执行后会进入到created() 这个第二个生命周期函数

代码实例:(生命周期函数演示)

created()

console.log(this.msg)

this.show()

此时如果右键游览检查,会显示:ok,执行了 show 方法

image.png

 

 

Created(){

//这是遇到的第二个生命周期函数在 created 中,data methdas 都已经被初始化好。如果要调用 methods 中的方法,或者操作 data 中的数据,最早只能在 created 中操作。

4.分支流程判断

image.png

接下来进入分支判断流程(流程图中菱形代表分支流程,矩形代表相关操作)

判断有没有“el”这个属性,el代表:el:’#app’

目前没有,继续走 no 的流程,编译 el outerHTML 当做模版,把 div 里面所有的内容,编译成模块进而执行操作。这里表示 Vue开始编辑模板。把 Vue 代码中的那些指令进行执行,最终在内存中生成一个编译好的最终模板字符串。然后,把这个模板字符串,渲染为内存中的DOM 。此时,只是在内存中,渲染好了模板,并没有把模板挂载到真正的页面中去。

5.beforeMount ()第三个生命周期函数

 

image.png

beforeMount(){

//这是遇到的第三个生命周期函数,此函数执行时,表示模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中,此时页面还是旧的。

代码实例:(生命周期函数演示)

<div id = “app”>

<h3 id = “h3”>{{  msg  }} <h3>

Console.log.(document. getElementById(‘h3’).innerText)

此时如果右键游览检查,会显示:{{  msg  }},并不是真实的 ok 内容。这说明:

// beforeMount执行时,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符。

6.  Create vm $el and replace “el”with it

这一步表示将内存中编译好的模板,真实的替换到浏览器的页面中去。

7.  mounted()

mounted(){

//这是遇到的第四个生命周期函数,表示内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面。

代码实例:(生命周期函数演示)

mounted(){

Console.log.(document. getElementById(‘h3’).innerText)

此时如果右键游览检查, ok 内容。

注意:mounted 是实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好了,此时,如果没有其它操作,这个实例在内存中保持不变。

当执行到mounted 表示组件已经创建完成。四个钩子函数中前两个是一组,是实例刚被初始化,后两个是一组,是模板将要被挂载和已经被挂载完成。

 

相关文章
|
2月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
311 2
|
5月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
785 0
|
5月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
5月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
268 19
|
5月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件的实现代码:支持自定义表情库、快捷键发送和输入框联动的聊天表情解决方案
本文详细介绍了在 Vue 项目中实现一个功能完善、交互友好的表情包输入组件的方法,并提供了具体的应用实例。组件设计包含表情分类展示、响应式布局、与输入框的交互及样式定制等功能。通过核心技术实现,如将表情插入输入框光标位置和点击外部关闭选择器,确保用户体验流畅。同时探讨了性能优化策略,如懒加载和虚拟滚动,以及扩展性方案,如自定义主题和国际化支持。最终,展示了如何在聊天界面中集成该组件,为用户提供丰富的表情输入体验。
485 8
|
5月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
275 1
|
5月前
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
250 0
|
1月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
286 137
|
7月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1015 4
|
6月前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
837 77