Vue keep-alive缓存管理,简单store模式实现

keep-alive 缓存页面实现a->b(缓存)->c,b(销毁)->a。

一、注意
  1. b退出时调用this.$destroy()会导致第二次进入b不会缓存;
  2. <keep-alive :include="appKeepAlive">...</keep-alive> appKeepAlive如果是数组,重置数据需要保证数组指向对象不改变。
二、实现代码
<!--template-->
<keep-alive :include="appKeepAlive">
  <router-view />
</keep-alive>
//vue js
data() {
  return {
    appKeepAlive: KeepAliveStore.state.appKeepAlive,
  };
}
//KeepAliveStore
/**
 * @Author: LuoYang
 * @Email: toluoyang@qq.com
 * @Date: 2021/10/31 2:51 下午
 * @Description: keep-alive 缓存
 */
export default {
  debug: true,
  state: {
    appKeepAlive: [],
    homeKeepAlive: [],
  },

  keepAliveClear() {
  	//注意重置数据方法需保证数组指向对象不变,用array=[]、array.length=0都会导致缓存不能预期缓存和销毁
    if (this.debug) console.log("keepAliveClear triggered");
    
    this.state.appKeepAlive.splice(0, this.state.appKeepAlive.length);
    this.state.homeKeepAlive.splice(0, this.state.homeKeepAlive);
  },

  appKeepAliveAdd(value) {
    if (this.debug) console.log("appKeepAliveAdd triggered with", value);

    this.state.appKeepAlive.push(value);
  },
  appKeepAliveRemove(value) {
    let index = this.state.appKeepAlive.indexOf(value);
    if (index !== -1) {
      if (this.debug) console.log("appKeepAliveAdd triggered", value);

      this.state.appKeepAlive.splice(index, 1);
    }
  },

  homeKeepAliveeAdd(value) {
    if (this.debug) console.log("homeKeepAliveeAdd triggered with", value);

    this.state.homeKeepAlive.push(value);
  },
  homeKeepAliveRemove(value) {
    let index = this.state.homeKeepAlive.indexOf(value);
    if (index !== -1) {
      if (this.debug) console.log("homeKeepAliveRemove triggered", value);

      this.state.homeKeepAlive.splice(index, 1);
    }
  },
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值