当前位置: 首页 > news >正文

vue keep-alive 如何设置动态的页面缓存

页面有时候需要设置缓存,比如填写信息页面 选择部门人员时跳转到组织架构页面,选择完毕之后返回信息填写页面,再次点击选人员页面需要保存之前已选的状态,但是在保存信息后需要将缓存状态清除,代码如下

1.在vuex中添加路由缓存列表

在这里插入图片描述
代码如下

const state = {
  include: [], // 路由缓存列表
}
const mutations = {
  // 添加路由缓存
  SETINCLUDELIST(state, payload) {
    state.include.push(payload)
  },
  // 删除路由缓存
  REMOVEINCLUDELIST(state, payload) {
    let index = state.include.indexOf(payload)
    state.include.splice(index, 1)
  },
  // 清空缓存路由
  CLEARINCLUDELIST(state) {
    state.include = []
  },
}
const actions = {}
export default {
  namespaced: true,
  state,
  mutations,
  actions,
}

2.在App.vue文件里给 keep-alive 添加 include属性并且进行监听

在这里插入图片描述
代码如下

<template>
  <div id="app">
    <!-- 一级路由出口 -->
    <keep-alive :include="include">
      <router-view v-if="$route.meta.keepAlive"></router-view
    ></keep-alive>
    
  </div>
</template>
<script>
import { mapState } from 'vuex'
export default {
  watch: {
    $route: {
      handler(to, from) {
        to.matched.forEach((item) => {
          // 需要缓存的页面 且 缓存列表里面没有当前页面的 执行缓存操作
          if (item.meta.keepAlive && !this.include.includes(item.name)) {
            this.$store.commit('app/SETINCLUDELIST', item.name)
          }
        })
        // 首页标签切换的时候 删除前一个页面的缓存
        if (
          to.path.includes('layout') &&
          from.path.includes('layout') &&
          this.include.includes(from.name)
        ) {
          this.$store.commit('app/REMOVEINCLUDELIST', from.name)
        }
      },
    },
  },
  computed: {
    ...mapState({
      include: (state) => state.app.include,
    }),
  },
}
</script>

3.使用。

首先需要在路由文件里给页面加缓存属性,即 keepAlive: true
在这里插入图片描述
其次,如果页面需要清除缓存状态,代码如下
在这里插入图片描述

注意:要删除的路由名称一定要和页面组件的name一致

在这里插入图片描述
这样就可以了

相关文章:

  • Python | kelvin波的水平空间结构
  • [MySQL]复合查询
  • 408 计算机网络 知识点记忆(7)
  • 基于phpStudy/宝塔搭建pbootcms,用于公司官网 | 解决管理后台登录报错问题 runtime\\data\\xx.php
  • 一文详解ffmpeg环境搭建:Ubuntu系统ffmpeg配置nvidia硬件加速
  • 2.2.3 Spark Standalone集群
  • 各类神经网络学习:(十)注意力机制(第2/4集),pytorch 中的多维注意力机制、自注意力机制、掩码自注意力机制、多头注意力机制
  • 游戏盾IP可以被破解吗
  • [特殊字符] macOS + Lima 离线下载 Calico 镜像教程
  • UML-饮料自助销售系统(饮料已售完)序列图
  • 每日一题-力扣-2999. 统计强大整数的数目 0410
  • 预言机与数据聚合器:DeFi的数据桥梁与风险博弈
  • 云原生运维在 2025 年的发展蓝图
  • PyTorch实现多输入输出通道的卷积操作
  • 非 root 用户运行 Docker 容器和同步主机和容器权限
  • vue入门:插槽
  • AI 重构 Java 遗留系统:从静态方法到 Spring Bean 注入的自动化升级
  • ocr python库
  • 《深度剖析分布式软总线:软时钟与时间同步机制探秘》
  • git清理已经删除的远程分支
  • 网站为什么做微云的采集/seo优化师就业前景
  • 公司网站备案需要什么/成都疫情最新消息
  • 网站后台模板关联自己做的网站/营销型网站的特点
  • ps做网站图/爱站工具下载
  • 做网站设计收入/百度账号个人中心
  • 网站开发合同注意事项/360优化大师软件