vue开发:动态缓存组件—动态应用keep-alive

vue动态缓存:动态应用keep-alive


在实现动态缓存之前,先了解以下技术点:

1.假设A组件用了缓存,则A组件首次加载的钩子执行顺序:created—> activated —> mounted,而再次返回A组件时只会执行activated,如果你想每次进入A组件都做一些事情的话,你可以放在activated里面

2.使用include和exclude的时候,必须给所有路由管理起来的vue组件都设置name属性,后果不赘述。

3.当同时使用include和exclude的时候,exclude的优先级会更高,例
include里面有nameA,exclude里面也有nameA,则此时nameA代表的组件就不会被缓存(实现原理就在这了!!!!!)

对keep-alive不熟的童鞋戳 这里

应用场景:
vue开发:动态缓存组件—动态应用keep-alive_第1张图片
逻辑思路:

要实现A(pre页)跳转B不缓存,即在跳转B页面之前exclude中要含有B,
反观C(next页)跳转B,B若想有缓存,则在B跳转C(next页)之前保证exclude里面没有B

对!!!思路就是这样,精简一点来说,每当B跳转页面之前,B—>A(B跳转pre页),exclude里面添加B的name属性,B—>C(B跳转next页)则把B的name属性在exclude中删除即可(这块逻辑对于脑瓜子好使的小伙伴一看就懂,而卤煮属于比较笨的一类,想的略久)

代码实现:
好了,就差怎么实现了,接下来直接上代码!!!

假设我就只有A、B、C三个页面,且B会用到缓存,我们只需要把B的name属性放到include,且同时控制explude中添加和删除B的name就可以实现动态缓存B组件,也就是上面的技术点3提到的优先级问题

此时B用到缓存,所以B的name属性一直在includeList放着,我们只是利用include和exclude的优先级来控制B是否缓存
我的页面入口代码如下: