Vue keep-alive 缓存动态组件实例不销毁组件

背景

有多个keep-alive 导致两个组下 互相删除不起作用。页面中路由嵌套的多,每层嵌套的下面都有一个keep-alive。然后tab菜单删除缓存未清掉。

解决方法

把嵌套的路由打平,只存在一级。外层只包裹一个keep-alive。
然后通过动态修改keep-alive组件的 include属性。来实现关闭tab标签,则删除对应的include。

代码

<keep-alive :include="keepAliveNames">
          <router-view/>
 </keep-alive> 

//keepAliveNames 可以是一个数组,里面存着的是要缓存的组件的name值。定义组件的时候要制定name。是根据这个name 做缓存的。

最好的方式是将打开的tab页面数组和keepAliveNames 整合为一个数组。数据保持统一性。这样tab页面删除,keepAliveNames里面也自动删除。如果不是一份数据,则需要维护两份数据保持一致。有点麻烦,还容易有时候不一致,产生bug。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容