首页 > 编程知识 正文

vue生命周期的理解,vue怎么用

时间:2023-05-03 07:03:29 阅读:18758 作者:2412

生命周期是指什么样的生命周期(Life Cycle )这一概念广泛使用,在政治、经济、环境、技术、社会等多个领域尤为常见。 从Vue中创建实例到销毁实例的整个“从摇篮到坟墓”(Cradle-to-Grave )过程是一个生命周期,这一点很容易理解。 这意味着,从创建、初始化数据、编译模板、装载DOM渲染、更新渲染、卸载等一系列过程中,我们可以将组件比作工厂中的流水线。 每个工人(生命周期)都站在各自的岗位上,当任务移动到工人身边时,工人开始工作。

生命周期有8个阶段:创建前后、加载前后、更新前后、销毁前销毁后,以及特殊场景的生命周期。 今天主要使用8个钩子函数

整个生命周期的过程

接下来,从以下三个阶段解读生命周期。

创建阶段执行阶段销毁阶段1 .创建阶段:创建并初始化Vue的实例对象。 此时,对象只有默认的周期函数和默认事件,尚未创建其他对象。

实例的初始化阶段主要有两个函数。

beforeCreate(created ) (beforecreate ) )。

现在,我们打印在data中定义的msg,然后尝试执行show方法。 打开页面并显示控制台。

我在这里弄错了。 this.show is not a function,即不可用。 在beforeCreate生命周期函数运行时,没有初始化data和methods数据。

运行created (接着是遇到的第二个挂接函数created )。

同样,我要去看页面和控制台。

打印结果显示,在created中,data和methods都已初始化。

调用methods的方法或处理data中的数据时,只能在created中进行操作。

开始编译模板。 然后,进入生命周期函数的编译开始模板。

在这里,Vue开始编译模板,

执行vue代码中的那些指令,生成最终编译到内存中的最终模板字符串,然后将该模板字符串呈现到内存中的DOM中。 此时,您只是在内存中渲染模板,而不是将模板挂载到真正的页面上。

装载模板:

开始编译模板后,它进入装载模板,装载阶段也分为两个挂接函数: beforeMount和mounted。

beforeMount ) )这是第三个生命周期函数,指示模板已编译到内存中

但是,没有在页面上渲染模板,让我们结合代码来看看

此时,我们试图将h3内容呈现到页面上,但可以在页面和控制台上看到

此时,页面上显示“确定”字符,但在控制台上仍为{{ msg }}

也就是说,运行beforeMount时,页面中的元素尚未被实际替换,只是以前编写的模板字符串。

mounted ) )这是第四个生命周期函数,指示内存中的模板实际装载到页面上,以便用户可以看到渲染的页面。

现在,页面上将显示“确定”字符,控制台也将渲染为“确定”字符串

注: mounted是实例创建期间的最后一个生命周期函数。 运行mounted时,表示实例已完全创建。 此时,如果没有其他操作,这个实例就会静静地躺在我们的内存里,一动不动。

我们创建阶段的生命周期函数已经完成。 也就是说,是图的圆形部分。

2 .执行阶段下一步的是执行阶段,也就是下图的部分。

执行阶段主要是两个挂接函数。

beforeupdate(updated ) )首先,让我们看看执行阶段的这两个事件

When data changes是指在数据发生变更时

beforeUpdate ) )该挂接函数根据data数据的变化选择性地从0触发多次

为了更好地查看beforeUpdate ()数据的更改,请侦听msg数据,设置按钮,单击按钮更改数据,并将预设的“确定”更改为“否”。

在这个时候,它表明我们的界面还没有更新

这个时候我们需要考虑一个问题。 数据更新了吗?

数据一定更新了。 接口未更新,但数据data已更新。

看看印刷的结果吧

点击msg修改按钮后,点击得出结论:

即使运行beforeUpdate,页面上显示的数据仍然旧。

此时,data数据是最新的,页面尚未与最新的数据同步

updated ) )一样,updated ) )使用挂接函数执行前面的步骤

查看打印结果:

点击按钮后

此时,可知接口上要素的内容和data中的msg的数据为"否"

也就是说,当updated事件运行时,页面和data数据是同步的,并且都是最新的。

经过上述两个挂接函数的操作,完成了执行阶段的生命周期函数。

r> 最后就会进入到销毁阶段的生命周期函数:
同样的他们也有两个钩子函数:

beforeDestory()destoryed()
销毁阶段的钩子函数我们了解就好了。 beforeDestroy()

当执行beforeDestoy钩子函数的时候,Vue已经从运行阶段进入到了销毁阶段;
当执行beforeDestory的时候,实则身上所有的data和所有的methods,以及过滤器、指令等,都处于可用状态,此时还没有真正执行销毁的过程。

destroyed()

当执行到destoryed函数的时候,组件已经完全销毁了,此时,组件中所有的data、methods、指令、过滤器等,都已经不可用了。
完全销毁一个实例。可清理它与其它实例的连接,解绑它的全部指令及事件监听器
并不能清除DOM,仅仅销毁实例。

经过代码的辅助理解,我们再回头看看整个图的过程,应该会更加清晰了吧。

Vue生命周期函数理解并不难,也是和代码一样至上而下执行,一步步执行。
另外下面借鉴一位儒雅的含羞草:
xuxinwen32
给出的10个钩子函数的表格总结:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。