vue单页缓存存在的问题及解决方案

本文探讨了Vue单页应用中遇到的缓存问题,包括CSS同名覆盖、事件全局绑定、音频续播、微信分享数据未更新、路由守卫问题、hash改变不触发导航守卫以及分享链接更新等,并提供了对应的解决方案,如使用`scoped`和`deep`、正确管理全局事件、监听页面状态并在相应钩子中处理等。
摘要由CSDN通过智能技术生成

1.css同名覆盖,解决方法:父组件加上scoped

<style lang="scss" scoped>
 @import './unbind.scss'
</style>

子组件同名样式加上deep

/deep/ .tabs-row {
 .items-wrp{
  padding-left: .34rem;
 }
 .item {
  margin:0 .12rem .16rem 0;
 }
}

2.事件全局绑定

绑在window或document或body上的事件,切换到下一个页面同样会被触发,需要销毁,也防止内存泄漏,全局绑定的事件如果是公用组件慎用off().on(),因为可能引用的其他的组件全局绑定的事件被移除
destroyed:返回的时候会触发,防止返回到上一页时window上scroll被触发,官网上是推荐在beforeDestroy做事件移除或者新增DOM或移动DOM操作
deactivated:前进到新页面时会触发,防止进入下一页时window上scroll被触发
activated:被缓存的页面激活,即返回时被触发,created此时不会被触发,重新绑定事件

activated () {
 // 不直接绑定scroll,此处有限制
 this.bindEvent()
},
destroyed () {
 $(window).off('scroll', this.handleScrollFn)
},
deactivated () {
 $(window).off('scroll', this.handleScrollFn)
},
//前端全栈学习交流圈:866109386
//面向1-3经验年前端开发人员
//帮
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值