关于vue生命周期几个钩子函数

1.beforeCreate

使用频率较低,在实例创建以前调用,此时没有实例化,数据访问不到。

总结大佬们用到的地方:

可以做页面拦截。当进一个路由的时候我们可以判断是否有权限进去,是否安全进去,携带参数是否完整,参数是否安全。使用这个钩子好函数的时候就避免了让页面去判断,省掉了创建一个组建Vue实例。

可以做自定义重定向。当路由还没有进去时我们判断是否正确进去,若不正确进去可以重定向到指定的页面。

(ps他这里是不是想描述的是路由的beforEeach啊,没有试过。)

使用了路由的单页应用,想要在实例化之前尽早的做些事,设置个title什么的。

(这个可以有,聊胜于无吧)

2.created

当实例被创建后的钩子函数,也就是虚拟DOM被创建出来了,此时data已经初始化,可以获取数据和修改数据了

在这个钩子函数中常用来初始化一些数据,可是因为实例还未挂载,也就是说真实的DOM还未生成,此时并无法通过getElementById该类api获取真实DOM

看下官方文档的描述:

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

3.beforeMount

这个钩子函数还没用过,网站上大佬们也没见有什么更深的理解,大多都说和created没什么区别吧,后续待补充吧

4.mounted

最常用的钩子函数之一了,此时创建出来的虚拟DOM已经被挂载到页面上了,所以不仅可以获取到data数据,也可以自由操作页面上生成的节点啦。发送请求渲染页面一气呵成。如果调用了ref等api也是在这里才能获取到元素。

另外看别的大佬描述,在mounted之前的钩子函数中修改数据是不会触发updated beforeUpdate钩子函数的,在这里面修改才会触发。

5.beforeUpdate

该钩子函数会在视图层更新前调用,需要注意的是在该钩子函数中如果进行修改数据,并不会重新调用update钩子函数,因为虽然数据改变了,但是视图层并未改变。所以并不是data修改一定会导致update钩子调用,而是视图层修改了才会导致。

6.updated

和beforeUpdate同理,只会在视图层发生改变后调用,且此时已经处于更新完毕状态,视图层已经更新,所以不能在该钩子函数中进行数据改变,否则会造成死循环。(ps那如果只是赋值操作而不是++--这种还会一直触发吗?就是给data赋一个相同的值会触发吗)

7.beforeDestory

该钩子函数再组件销毁前被调用,此时实例还存在,可以清理非vue资源,防止内存泄露,比如销毁定时器,解绑全部指令及事件监听,清除全局事件,清除本地存储等

8.destoryed

此时vue实例已经卸载,无法获取到,所以用来清除一些全局比如windows上的事件,操作body,

由于EventBus不会凭空消失,所以需要销毁EventBus相关定义的事件,否则一直会以指数型方式触发 $emit。

销毁VueX中存储的数据,否则页面不刷新,在页面刚渲染时,一直展示的是上次的数据。

清空浏览器localStorage种植的某些变量。beforeDestroy 移除echarts的所有鼠标事件以及清空会话

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值