记一次vue^2.6.5-router^3.0.6的keep-alive事故

在Vue项目中,遇到keep-alive组件在切换视图时导致created方法重复调用的问题,尝试了文档推荐的includes属性设置,但未生效。深入研究文档后,发现应当使用activated钩子替代created。经过强制刷新,问题最终得到解决,组件在切换时正确执行activated,保持了之前的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事情的起因是这样的
一开始客户有个需求,在一个列表上面有筛选功能,通过录入筛选条件,然后进入一个detail页面,用户希望按浏览起的退回按钮,能保留之前的筛选条件,这简单,加个 keep-alive 不就好了吗
好的,然后这个需求很快完成并过去了
在这里插入图片描述

过了一阵子,突然发现怎么每次在阴功列表页面点击 「进入管理员视图」的时候,已经到了别的页面了,竟然还会调用一次应用列表的created调用列表的接口。
网上一搜这个问题,很多人的解决方案是使用keepp-alive的includes属性来解决
https://juejin.cn/post/6844904178926485511 例如这里说到的
但是我怎么设置都没有生效keepalive的作用。
这里有点欲哭无泪
百度看来是没有用的,全都是相同的解决方案,还是直接看文档吧
文档也这么写,秉着「不可能,明明文档这么写不可能会错」的精神,但我我试了好几种写法,都不行!!
我无语了,继续研究文档还有没有别的解决方案
然后看到keep-alive 的文档写到:

缓存实例的生命周期#
当一个组件实例从 DOM 上移除但因为被 <KeepAlive> 缓存而仍作为组件树的一部分时,它将变为不活跃状态而不是被卸载。当一个组件实例作为缓存树的一部分插入到 DOM 中时,它将重新被激活。

结合现在实际情况,可以理解为,keepalive的组件,会在每次新渲染dom的时候,它也会跟着生效created里面的事件。

接着在找文档,kepp-alive将会执行activated里面的函数,突然问题好像得到了解决。。。
created换成activated
我换成了这个后,刷新还是那个死样子,更加有点无语,
秉着「不可能,明明文档这么写不可能会错」的精神,我强制刷新了一遍。。结果就好了。。。先溜了,好饿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值