IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue3增加动态缓存KeepAlive,列表、详情 -> 正文阅读

[JavaScript知识库]Vue3增加动态缓存KeepAlive,列表、详情

使用版本

???"vue": "3.1.4",

? ? "vue-class-component": "^8.0.0-0-rc.1",

? ? "vue-router": "^4.0.0-0",

? ? "vuex": "^4.0.0-0",

? ? "vuex-module-decorators": "^1.0.1"

? ? ? ?上一篇文章中:Vue2增加动态缓存KeepAlive,列表、详情? 增加了动态缓存,同理迁移到vue3就不大好用了,针对这个版本,做了调整,贴代码:

1、修改路由增加<keep-alive>

这是个二级路由的Layout页面

注意:keep-alive不要写if语句,include如果是空字符串会判断为命中,生成缓存。

<template>
  <router-view v-slot="{ Component }">
    //动态生成缓存,和vue2写法不一样
    <div v-if="keepRoute === 'ExamScorePersonList'">
      <keep-alive :include="keepRoute">
        <component :is="Component" />
      </keep-alive>
    </div>
    <div v-else>
      <component :is="Component" />
    </div>
  </router-view>
</template>
<script lang="ts">
import { Vue, Options } from 'vue-class-component'
@Options({
  name: 'ExamLayout',
  computed: {
    keepRoute: function () {
      return this.$store.state.aliveRoutes.keepAliveRoute
    },
  },
})
export default class ExamLayout extends Vue {}
</script>

2、增加store

?新建?aliveRoutes.ts

import {
  VuexModule,
  Module,
  Mutation,
  Action,
  getModule,
} from 'vuex-module-decorators'
import store from '@/store'

@Module({ name: 'aliveRoutes', dynamic: true, store })
export default class AliveRoutes extends VuexModule {
  public keepAliveRoute = ''

  @Mutation
  private UPDATE_KEEPALIVEROUTE(routeName: string) {
    console.log('UPDATE_KEEPALIVEROUTE', routeName)
    this.keepAliveRoute = routeName
  }

  @Action
  public updateKeepAliveRoute(routeName: string) {
    this.UPDATE_KEEPALIVEROUTE(routeName)
  }
}

export const AliveRoutesIns = getModule(AliveRoutes)

3、动态路由使用及动态数据维护

修改列表文件,我这里是examScorePersonList.vue。

beforeRouteEnter(to: any, from: any, next: any) {
    //每次进来,开启列表缓存
    AliveRoutesIns.updateKeepAliveRoute('ExamScorePersonList')
    next()
  }
  beforeRouteLeave(to: any, from: any, next: any) {
    if (to.name === 'ExamScoreScore') { //跳转到详情,保持缓存
      AliveRoutesIns.updateKeepAliveRoute('ExamScorePersonList')
    } else { //跳转到其他页面,不再缓存
      AliveRoutesIns.updateKeepAliveRoute('')
    }
    next()
  }

?完成~~~2021.12.16

当然也可以把动态数据维护写到路由守卫中

?如果维护多个字段,维护数据可以生成数组呦~~,include时候用逗号,连接判断。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:53:03  更:2021-12-18 15:54:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:15:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码