事情的起因是这样的
一开始客户有个需求,在一个列表上面有筛选功能,通过录入筛选条件,然后进入一个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
我换成了这个后,刷新还是那个死样子,更加有点无语,
秉着「不可能,明明文档这么写不可能会错」的精神,我强制刷新了一遍。。结果就好了。。。先溜了,好饿