vue生命周期钩子函数,闭关60天学懂NDK+Flutter

var vm = new Vue({

el: ‘#app’,

data: {

message: ‘今天是周一!!!’

},

beforeCreate(){

console.group(‘beforeCreate 创建前状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //undefined

console.log(“%c%s”, “color:red”, "data : "+this.$data); //undefined

console.log(“%c%s”, “color:red”, "message: "+this.message); //undefined

},

//…

2 .created

官方解释:实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el属性目前不可见。

说明:这个时候可以操作vue中的数据和方法,但是还不能对dom节点进行操作。

//…

created(){

console.group(‘created 创建完毕状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //undefined

console.log(“%c%s”, “color:red”, "data : "+this.$data); //[object Object]

console.log(“%c%s”, “color:red”, "message: "+this.message); //今天是周一!!!

},

//…

3 .beforeMount

官方解释:在挂载开始之前被调用:相关的render 函数首次被调用。

说明:$el属性已存在,是虚拟dom,只是数据未挂载到模板中。

//…

beforeMount(){

console.group(‘beforeMount 挂载前状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //[object HTMLDivElement]

console.log(this.$el);

console.log(“%c%s”, “color:red”, "data : "+this.$data); //[object Object]

console.log(“%c%s”, “color:red”, "message: "+this.message); //今天是周一!!!

},

//…

4 .mounted

官方解释:el 被新创建的 vm. e l 替 换 , 并 挂 载 到 实 例 上 去 之 后 调 用 该 钩 子 。 如 果 r o o t 实 例 挂 载 了 一 个 文 档 内 元 素 , 当 m o u n t e d 被 调 用 时 v m . el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm. el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个文档内元素,当mounted被调用时vm.el 也在文档内。

注意 mounted 不会承诺所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染完毕,可以用 vm.$nextTick替换掉 mounted

说明:挂载完毕,这时dom节点被渲染到文档内,dom操作在此时能正常进行

//…

mounted(){

console.group(‘mounted 挂载结束状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //[object HTMLDivElement]

console.log(this.$el);

console.log(“%c%s”, “color:red”, "data : "+this.$data); //[object Object]

console.log(“%c%s”, “color:red”, "message: "+this.message); //今天是周一!!!

},

//…

Vue生命周期

点击页面中的元素执行相应的事件,并触发beforeUpdate和updated钩子函数

5 .beforeUpdate

官方解释:数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。

说明:beforeUpdate是指view层的数据变化前,不是data中的数据改变前触发。因为Vue是数据驱动的。

//…

beforeUpdate(){

console.group(‘beforeUpdate 更新前状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //[object HTMLDivElement]

console.log(this.$el);

console.log(this.$el.innerHTML); //

今天是周一!!!

console.log(“%c%s”, “color:red”, "data : "+this.$data); //[object Object]

console.log(“%c%s”, “color:red”, "message: "+this.message); //今天周二了!!!

},

//…

6 .updated

官方解释:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。

当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态。如果要相应状态改变,通常最好使用计算属性或 watcher取而代之。

注意 updated 不会承诺所有的子组件也都一起被重绘。如果你希望等到整个视图都重绘完毕,可以用 vm.$nextTick替换掉 updated:

说明:view层的数据更新后,data中的数据同beforeUpdate,都是更新完以后的。

//…

updated(){

console.group(‘updated 更新完成状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //[object HTMLDivElement]

console.log(this.$el);

console.log(this.$el.innerHTML); //

今天周二了!!!

console.log(“%c%s”, “color:red”, "data : "+this.$data); //[object Object]

console.log(“%c%s”, “color:red”, "message: "+this.message); //今天周二了!!!

},

//…

Vue生命周期

注意:细心的小伙伴会发现beforeUpdate和updated钩子函数中的 e l 一 样 , 根 据 官 方 理 解 b e f o r e U p d a t e 应 该 指 向 虚 拟 d o m , 所 以 才 会 一 样 , 而 d o m 中 的 真 正 内 容 不 一 样 , 但 是 b e f o r e M o u n t 和 m o u t e d 钩 子 函 数 中 为 什 么 又 会 有 区 别 呢 ? 感 觉 是 设 计 的 不 足 之 处 。 执 行 v m . el一样,根据官方理解beforeUpdate应该指向虚拟dom,所以才会一样,而dom中的真正内容不一样,但是beforeMount和mouted钩子函数中为什么又会有区别呢?感觉是设计的不足之处。 执行vm. el一样,根据官方理解beforeUpdate应该指向虚拟dom,所以才会一样,而dom中的真正内容不一样,但是beforeMount和mouted钩子函数中为什么又会有区别呢?感觉是设计的不足之处。执行vm.destroy()函数触发beforeDestroy和destoryed钩子函数

7 .beforeDestroy

官方解释:实例销毁之前调用。在这一步,实例仍然完全可用。

说明:

//…

beforeDestroy(){

console.group(‘beforeDestroy 销毁前状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //[object HTMLDivElement]

console.log(this.$el);

console.log(“%c%s”, “color:red”, "data : "+this.$data); //[object Object]

console.log(“%c%s”, “color:red”, "message: "+this.message); //今天周二了!!!

},

//…

8 .destroyed

官方解释:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

说明:执行destroy方法后,对data的改变不会再触发周期函数,此时的vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在。

//…

destroyed(){

console.group(‘destroyed 销毁完成状态==========>>’);

console.log(“%c%s”, “color:red”, "el : "+this.$el); //[object HTMLDivElement]

console.log(this.$el);

console.log(“%c%s”, “color:red”, "data : "+this.$data); //[object Object]

console.log(“%c%s”, “color:red”, "message: "+this.message); //今天周二了!!!

},

//…

Vue生命周期


总结:

beforecreate:可以在这加个loading事件

created :在这结束loading,还做一些初始化,实现函数自执行

mounted : 在这发起后端请求,拿回数据,配合路由钩子做一些事情

beforeDestory: 你确认删除vue实例了吗?

destoryed :当前实例已被销毁,解绑相关指令和事件监听器

代码如下:

{{message}}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

总结一下

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值