vue页面刷新时,执行了哪些生命周期——谨慎使用beforeDestroy和destroyed

      先来回顾一下vue实例的生命周期(以下图片来自官方文档)。

      我的项目中某个组件在localstorage中存了数据,要求离开页面时需要把localstorage中相应的数据清空。于是我将清空storage的代码写在了beforeDestroy中。但在刷新页面时,storage并没有被清空。

      经过测试发现,在页面刷新时,实例依次执行了beforeCreate(),created(),beforeMount(),mounted(),beforeUpdate(),updated()。并没有来得及执行destroy,与把页面关闭再重新打开的效果是一样的。所以在beforeDestroy或destroyed时执行的代码,要额外考虑一下对页面刷新的处理。

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Vue中,当页面刷新,会触发以下生命周期函数: 1. beforeCreate: 在实例初始化之后、数据观测 (data observer) 和 event/watcher 事件配置之前被调用。 2. created: 在实例创建完成后被立即调用。在这一步,实例已完成以下配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。但是,挂载阶段还没开始,$el 属性目前不可见。 3. beforeMount: 在挂载开始之前被调用。相关的 render 函数首次被调用。 4. mounted: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。此,实例的根 DOM 元素被新创建的 vm.$el 替换,vm.$el 属性在此被访问并且能够操作页面的 DOM 元素。 5. beforeUpdate: 数据更新调用,发生在虚拟 DOM 重新渲染和打补丁之前。可以在该钩子中进一步地更改数据,不过需要注意避免更新数据造成无限循环的问题。 6. updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁完成之后调用该钩子。页面已经更新,可以执行依赖于 DOM 的操作。 7. beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用。 8. destroyed: Vue 实例销毁后调用。该钩子被调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 需要注意的是,在刷新页面Vue实例会被重新创建,因此会按照上述顺序再次触发生命周期函数。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值