欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

KeepAlive 简单使用,及手动去除内容存储

程序员文章站 2022-04-26 11:45:37
...

项目需求:使用keep-alive 实现项目中部分页面的存储功能,当关闭页面需求清除掉缓存,tab切换页面时需要保留内容进行缓存;

问题:关闭后,重新打开页面,内容仍然存在,需要强制清除keep-alive 保留的缓存内容;

效果如下:

KeepAlive 简单使用,及手动去除内容存储

实过程及思路:部分代码

1、keep-alive 使用保留缓存实现:

router配置:

KeepAlive 简单使用,及手动去除内容存储或者 KeepAlive 简单使用,及手动去除内容存储

    <keep-alive>
      <router-view v-if="$route.meta.keepalive" :key="key" />
    </keep-alive>
    <router-view v-if="!$route.meta.keepalive" :key="key" />

关闭菜单操作:

pageDelete(id, tag) {
  this.$store.commit('tagBar/tagDelete', id)
}

store 存储设置:

KeepAlive 简单使用,及手动去除内容存储

在需要的页面中处理设置;

//从store 去除删除的内容标识;
import { mapGetters } from 'vuex'
computed: {
    ...mapGetters(['closeTagName'])
  },

/******** 其他内容略过 ********/

// 路由离开,处理需要销毁的内容
beforeRouteLeave(to, from, next) {
    if (this.closeTagName === '添加客户') {
      this.$router.history.current.meta.keepalive = false
      // 设置下一个路由的 meta
      to.meta.keepAlive = false // 不缓存
      this.$store.commit('tagBar/setCloseTagName')
    } else {
      this.$router.history.current.meta.keepalive = true
      // 设置下一个路由的 meta
      to.meta.keepAlive = true // 不缓存
    }
    next()
  }

以上内容仅供参考;