【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 表示组件已经创建完成。四个钩子函数中前两个是一组,是实例刚被初始化,后两个是一组,是模板将要被挂载和已经被挂载完成。

 

相关文章
|
19天前
|
JavaScript
Vue 父传子组件传参 defineProps
Vue 父传子组件传参 defineProps
|
19天前
|
JavaScript 前端开发
Vue 创建组件
Vue 创建组件
|
23天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
23天前
|
JavaScript
常见函数的4种类型(js的问题)
常见函数的4种类型(js的问题)
11 0
|
19天前
|
JavaScript
vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)
vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)
35 0
|
1天前
|
JavaScript
【vue实战】父子组件互相传值
【vue实战】父子组件互相传值
6 1
|
2天前
|
存储 JavaScript 前端开发
【Vue】绝了!这生命周期流程真...
【Vue】绝了!这生命周期流程真...
|
2天前
|
JavaScript 前端开发
js开发:请解释什么是ES6的Generator函数,以及它的用途。
ES6的Generator函数是暂停/恢复功能的特殊函数,利用yield返回多个值,适用于异步编程和流处理,解决了回调地狱问题。例如,一个简单的Generator函数可以这样表示: ```javascript function* generator() { yield &#39;Hello&#39;; yield &#39;World&#39;; } ``` 创建实例后,通过`.next()`逐次输出&quot;Hello&quot;和&quot;World&quot;,展示其暂停和恢复的特性。
13 0
|
4天前
|
JavaScript 前端开发 内存技术
Vue入门:构建你的第一个Vue应用程序
【4月更文挑战第22天】Vue.js 入门教程:安装 Node.js 和 npm,使用 Vue CLI (`npm install -g @vue/cli`) 创建项目,选择预设或自定义配置。在 `src/components/` 创建 `HelloWorld.vue` 组件,显示数据属性。在 `App.vue` 中引入并注册组件,启动开发服务器 (`npm run serve`) 预览。开始你的 Vue 之旅!
|
9天前
|
缓存 JavaScript 前端开发
js的入口函数,入口函数的作用
js的入口函数,入口函数的作用
15 4