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