vue3中< keep-alive >页面实现缓存及遇到的问题

news2024/9/28 16:30:57

vue3中< keep-alive >页面实现缓存及遇到的问题

实现原理:keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。实现不同路由是否缓存只需要设置对应路由参数keepAlive为true,不需要缓存的路由设置false。如果是多级路由你要设置子路由缓存的话,它的父级路由的keepAlive也必须为true。

keep-alive的参数
参数原理
include它会根据组件的 name 选项进行匹配,所以组件如果想要条件性地被 KeepAlive 缓存,就必须显式声明一个 name 选项
exclude任何名称与 exclude 匹配的组件都不会被缓存
max最大缓存实例数
<!-- 以英文逗号分隔的字符串 -->
<KeepAlive include="a,b">
  <component :is="view" />
</KeepAlive>

<!-- 正则表达式 (需使用 `v-bind`) -->
<KeepAlive :include="/a|b/">
  <component :is="view" />
</KeepAlive>

<!-- 数组 (需使用 `v-bind`) -->
<KeepAlive :include="['a', 'b']">
  <component :is="view" />
</KeepAlive>
一:keep-alive设置缓存
<template>
  <div id="app">
    <!--需要缓存的keep-alive配置 展示内容-->
    <keep-alive :include="getKeepAliveNames">
      <router-view v-if="$route.meta.keepAlive" />
    </keep-alive>
    <!--不需要缓存的keep-alive 配置 展示内容-->
    <router-view v-if="!$route.meta.keepAlive" />
  </div>
</template>

二:router,多级router页面缓存
  //首页
  {
    path: "/home",
    name: "home",
    component: component: () => import("@/views/home/index.vue")//配置keep-alive 的状态  
    meta: {
      keepAlive: true, //需要缓存的页面,
      title:"首页"
    },
  },
  {
   path: "/user",
   name: "user",
   component:  component: () => import("@/views/user/index.vue"),
   //配置keep-alive 的状态  
   meta: {
     keepAlive: true, //需要缓存的页面
     title:"用户"
   },
   children:[
		  {
			   path: "/userOne",
			   name: "userOne",
			   component:  component: () => import("@/views/userOne/index.vue"),
			   //配置keep-alive 的状态  
			   meta: {
			     keepAlive: true, //需要缓存的页面,
			     title:"用户1"
			   },
			 },
			 {
			   path: "/userTwo",
			   name: "userTwo",
			   component:  component: () => import("@/views/userTwo/index.vue"),
			   //配置keep-alive 的状态  
			   meta: {
			     keepAlive: true, //需要缓存的页面,
			     title:"用户2"
			   },
			 },
	]
 },

三:查看页面是否缓存成功
1:查看 onActivated ,onDeactivated 判断 keepalive是否生效
<script setup>
import { onActivated, onDeactivated } from 'vue'

onActivated(() => {
  // 调用时机为首次挂载
  // 以及每次从缓存中被重新插入时
})

onDeactivated(() => {
  // 在从 DOM 上移除、进入缓存
  // 以及组件卸载时调用
})
</script>
2:使用vue插件判断缓存是否生效

在这里插入图片描述

四:遇到的问题

写了以上步骤缓存都失效,查看了原因:是因为keep-alive里面的名称和组件的名称没有匹配上。
解决办法是在组件页面给他命名,这样就解决了。

import { defineOptions} from 'vue';
defineOptions({ name: 'userRegister' })//与路由的name要一致

如果遇到defineOptions报错
更新vue和vue-router版本就行;我的版本是:"vue": "3.3.4","vue-router": "^4.0.12",然后再npm i安装一下再重启项目就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2174086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel里的 $ 是什么意思,绝对引用用法详解来了

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f511; 在Excel中&#xff0c;$符号是一个功能强大的工具&#xff0c;它用于实现单元格引用的绝对引用和混合引用。了解它的用法对于编写公式和处理数据至关重要。今天&#xff0c;我们将详细介绍$符号的用法和一些实…

【C++】设计用户级缓冲区

目录 缓冲区功能分析 缓冲区空间分配策略分析 数据设计和函数介绍 完整代码 接口介绍 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 缓冲区功能分析 1.可以向缓冲区写入数据 2.可用从缓冲区读取数据 3.可用窥探数据——把数据拷贝给上层&#xff0c;但缓冲区数据不减少 …

巧用枚举消除条件判断

shigen坚持更新文章的博客写手&#xff0c;记录成长&#xff0c;分享认知&#xff0c;留住感动。个人IP&#xff1a;shigen 在上一篇的文章结合HashMap与Java 8的Function和Optional消除ifelse判断中有讲到如何结合HashMap与Java 8的Function和Optional消除ifelse判断&#xff…

校园二手交易平台的小程序+ssm(lw+演示+源码+运行)

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

Transformer: Attention is all you need

Transformer于2017年提出&#xff0c;最开始应用于NLP领域&#xff0c;随着Transformer的快速发展&#xff0c;在视觉领域中也越来越多的论文或应用用到了Transformer&#xff0c;这里记录一下自己学习的一些知识点。 PDF&#xff1a; 《Attention Is All You Need》 Code: att…

【HTML5】html5开篇基础(3)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

带您了解《人工智能机器视觉应用工程师》

人工智能机器视觉应用是指利用人工智能技术和机器视觉技术相结合&#xff0c;使机器能够像人类一样通过视觉感知和理解环境&#xff0c;从而实现各种应用。随着人工智能技术的不断发展&#xff0c;机器视觉应用在各个领域得到了广泛应用。 在工业制造领域&#xff0c;人工智能机…

Unity3D入门(三) : Android和Unity3D交互 - Android调用Unity

1. 前言 上篇文章&#xff0c;我们讲了如何在Unity3D中过渡地切换相机视角。这篇文章&#xff0c;我们来讲一下Unity3D怎么与Android交互。 1.1 unity和Android的三种通信方式 Unity官方提供的接口 : 有一个弊端&#xff0c;它有一个传输内容量的一个限制&#xff0c;传输内…

Java---异常及处理

一.异常 1.概念 程序的非正常执行。高级语言都有异常处理机制&#xff08;C&#xff0c;Java&#xff09; 2.一般处理异常的方法 Scanner sc new Scanner(System.in);System.out.println("请输入一个数字:");String s sc.nextLine();if (s.matches("[0-9]&qu…

数据结构 - 排序算法

一.冒泡排序 /*** description: 冒泡排序* param - a : 要进行排序的数组的指针* param - length : 数组中元素的个数* return : 无 */ void Bubble_sort(int *a,int length) {int temp,i,j;for(i 0;i < length -1;i){for(j…

基于SpringBoot+Vue的小儿推拿培训管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目

一、源码特点 smm VUE电影售票管理系统是一套完善的完整信息管理类型系统&#xff0c;结合SSM框架和VUE、redis完成本系统&#xff0c;对理解vue java编程开发语言有帮助系统采用ssm框架&#xff08;MVC模式开发&#xff09;&#xff0c;系 统具有完整的源代码和数据库&#…

Vue devtools 插件

一、安装 去这下载https://chrome.zzzmh.cn/ 打开chrome的扩展程序 再打开开发模式 把刚才下载的拖到这里 然后把它固定到工具栏 就是这样了。 二、使用 程序通过open on live server后&#xff0c;打开开发者工具&#xff0c;找到vue就可以了。 这是代码 <div id"ap…

C++ 基础入门-命名空间、c++的输入输出、缺省参数、函数重载、引用、内联函数超详细讲解

这篇文章主要对c的学习做一个基础铺垫&#xff0c;方便后续学习。主要通过示例讲解命名空间、c的输入输出cout\cin&#xff0c;缺省参数、函数重载、引用、内联函数&#xff0c;auto关键字&#xff0c;for循环&#xff0c;nullptr以及涉及到的周边知识&#xff0c;面试题等。为…

遍历递归数结构,修改里的disabled值

返回参数中新增字段 disabled,后端给的值为1和2, disabled1时&#xff0c;代表该节点需要置灰&#xff0c;不可选中 现在需要将disabled的值,改为布尔类型; 后端给的数结构是对象类型,tree接收数组类型; 先将对象类型的数据,遍历递归,修改里面的disabled值,最后再加[ ],改为…

Magnific推V2图像生成服务 可直出4K图像

人工智能 - Ai工具集 - 集合全球ai人工智能软件的工具箱网站 近日&#xff0c;AI图像处理领域再迎重大突破&#xff0c;Magnific推出的V2图像生成服务引领行业潮流。此次升级&#xff0c;不仅使Magnific从高端软件跻身为顶级AI图像生成器&#xff0c;更彰显了其在技术创新及用…

html+css+js实现Progress 进度条

实现效果 代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>progress</title><st…

动手学深度学习(李沐)PyTorch 第 4 章 多层感知机

4.1 多层感知机 隐藏层 我们在 3.1.1.1节中描述了仿射变换&#xff0c; 它是一种带有偏置项的线性变换。 首先&#xff0c;回想一下如 图3.4.1中所示的softmax回归的模型架构。 该模型通过单个仿射变换将我们的输入直接映射到输出&#xff0c;然后进行softmax操作。 如果我们…

5V继电器模块详解(STM32)

目录 一、介绍 二、模块原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 relay.h文件 relay.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 继电器(Relay)&#xff0c;也称电驿&#xff0c;是一种电子控制器件&#xff0c;它具有控制系统…

力扣75道热门算法题 第一天

1768、交替合并字符串 题解&#xff1a; class Solution {public String mergeAlternately(String word1, String word2) {int m word1.length(),n word2.length();int i 0, j 0; //双指针遍历两个数组StringBuilder sb new StringBuilder(); //生成一个StringBuilder对象…