VUE组件缓存处理,keep-alive相关应用

  • Post author:
  • Post category:vue


VUE组件缓存处理,keep-alive相关应用

需求描述

管理系统中需要增加类似如下的标签页,新创建标签时打开的是不存在缓存的新页面,切换页面时保存表单内容不刷新,关闭标签后从新打开页面又进入到非缓存页面。

在这里插入图片描述

之前处理方式

之前处理为每打开一个标签就创建一个与标签拥有对应关系的iframe,这样你在切换标签时实际上是切换对应iframe显示与隐藏,这样好处就是iframe只有在创建时才会加载一次,切换时不做任何处理,当然,也可以添加切换时的处理,但是这样的方式会很麻烦。

第一次处理

想到了VUEX状态管理,做两个router-view 一个用于缓存包裹一个用于非缓存页面,在纪录打开的标签对应的页面,判断该页面切换状态还是新建立状态,然后再决定他的视图出口是缓存状态,还是非缓存状态,当然,这种方法虽然间接显示了该功能,但是存在一些瑕疵,就是触发的实际,你新建页面后进入缓存,但是也只是进入后才进入缓存,在你切换第一次才会缓存下。但是指导研究了keep-alive后我发现…

目前处理方式

keep-alive的三种属性,include ,exclude ,max

include:只有名称匹配的组件会被缓存,

exclude:任何名称匹配的组件都不会被缓存,

max :最多可以缓存多少组件实例

主要使用了include,你可以在全局定义一个数组,这个数组就是关联的标签页,数组内是每个组件的名字,别忘了给每个组件增加一个name。

<keep-alive :include="cachedViews">
    <router-view :key="key" name="a" class="router-page"></router-view>
</keep-alive>

cachedViews 就是需要缓存的页面名称

还有问题就是缓存内的处理问题,activated,deactivated。这两个生命周期在切换页面时被缓存的页面所执行的方法。

至此基本解决了这个问题,当然,如果有更好的建议,欢迎大家指出。



版权声明:本文为weixin_44201257原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。