vue3中RouterView配合KeepAlive实现组件缓存

KeepAlive组件缓存

  • 为什么需要组件缓存
  • 代码展示
  • 缓存效果
  • 为什么不用v-if

为什么需要组件缓存

业务需求:一般是列表页面通过路由跳转到详情页,跳转回来时,需要列表页面展示上次展示的内容

代码展示

App.vue入口

<script setup lang="ts">
import { RouterView, RouterLink } from "vue-router"
</script><template><div><RouterLink to="/">home</RouterLink><RouterLink to="/about">about</RouterLink></div><div><RouterView v-slot="{ Component }">// AboutComponent是组件的名称,vue4组件中通过defineOptions定义<KeepAlive include="AboutComponent"><component :is="Component" /></KeepAlive></RouterView></div>
</template>

home.vue组件

<template><div>home</div>
</template><script setup lang="ts">
import { onMounted } from "vue"
defineOptions({name: "HomeComponent",
})
onMounted(() => {console.log("home onMounted")
})
</script>

about.vue组件

<template><div>about</div>
</template><script setup lang="ts">
import { onMounted } from "vue"
defineOptions({name: "AboutComponent",
})
onMounted(() => {console.log("about onMounted")
})
</script>

缓存效果

1、home和about组件首次加载都会执行onMounted生命周期,但是对about组件进行了缓存,再次切换到about组件,就不会重新初始化,就不会执行onMounted生命周期。
2、keepalive使用include和exclude实现缓存的好处是:只要被缓存的组件首次加载之后,无论在缓存组件之间切换,还是缓存组件与未缓存组件之间切换,都不会重新挂载。

为什么不用v-if

网络上经常使用就是如下代码:

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

虽然也能实现页面缓存,但是从非缓存组件切换到缓存组件时,会重新挂载缓存组件,从而再次执行onMounted生命周期,只有在两个同样是缓存的组件之间切换才会有实际的缓存效果

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

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

相关文章

【JAVA】比较器Comparator与自然排序(28)

JAVA 核心知识点详细解释 Java中比较器Comparator的概念和使用方法 概念 Comparator 是 Java 中的一个函数式接口,位于 java.util 包下。它用于定义对象之间的比较规则,允许我们根据自定义的逻辑对对象进行排序。与对象的自然排序(实现 Comparable 接口)不同,Comparat…

浪潮服务器配置RAID和JBOD

目录 1 配置RAID2 设置硬盘为JBOD模式3 验证结果 1 配置RAID 进入 bios 界面 选择 “高级” - “UEFI-HII配置” 选择 raid 卡 进入 Main Menu 点击 Driver Management&#xff0c;可以查询当前硬盘 返回上一级&#xff0c;点击 Configuration Management - Create virtu…

mongodb管理工具的使用

环境&#xff1a; 远程服务器的操作系统&#xff1a;centOS stream 9; mongoDB version:8.0; 本地电脑 navicat premium 17.2 ; 宝塔上安装了mongoDB 目的&#xff1a;通过本地的navicat链接mongoDB,如何打通链接&#xff0c;分2步&#xff1a; 第一步&#xff1a;宝塔-&…

03-Web后端基础(Maven基础)

1. 初始Maven 1.1 介绍 Maven 是一款用于管理和构建Java项目的工具&#xff0c;是Apache旗下的一个开源项目 。 Apache 软件基金会&#xff0c;成立于1999年7月&#xff0c;是目前世界上最大的最受欢迎的开源软件基金会&#xff0c;也是一个专门为支持开源项目而生的非盈利性…

实景VR展厅制作流程与众趣科技实景VR展厅应用

实景VR展厅制作是一种利用虚拟现实技术将现实世界中的展览空间数字化并在线上重现的技术。 这种技术通过三维重建和扫描等手段&#xff0c;将线下展馆的场景、展品和信息以三维形式搬到云端数字空间&#xff0c;从而实现更加直观、立体的展示效果。在制作过程中&#xff0c;首…

Python爬虫实战:获取天气网最近一周北京的天气数据,为日常出行做参考

1. 引言 随着互联网技术的发展,气象数据的获取与分析已成为智慧城市建设的重要组成部分。天气网作为权威的气象信息发布平台,其数据具有较高的准确性和实时性。然而,人工获取和分析天气数据效率低下,无法满足用户对精细化、个性化气象服务的需求。本文设计并实现了一套完整…

几种超声波芯片的特点和对比

一 CX20106A ZIP - 8 CX20106A ZIP - 8 的核心竞争力在于高性价比、易用性和抗光干扰能力&#xff0c;尤其适合消费电子、短距离工业检测和低成本物联网场景。尽管在距离和精度上不及高端芯片&#xff0c;但其成熟的电路方案和广泛的市场应用&#xff08;如经典红外遥控升级为超…

利用ffmpeg截图和生成gif

从视频中截取指定数量的图片 ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180帧, 实测后发现如果视频是60fps,那么会从第10秒截取到第13秒-i input.mp4&#xff1a;指定输入视频文…

系统架构设计师案例分析题——数据库缓存篇

一.核心知识 1.redis和MySQL的同步方案怎么做的&#xff1f; 读数据&#xff1a;先查询缓存&#xff0c;缓存不存在则查询数据库&#xff0c;然后将数据新增到缓存中写数据&#xff1a;新增时&#xff0c;先新增数据库&#xff0c;数据库成功后再新增缓存&#xff1b;更新和删…

什么是智能体?

什么是智能体&#xff1f; 智能体&#xff08;AI Agent&#xff09;是一种能够自主感知环境、做出决策并执行任务的智能实体&#xff0c;其核心依赖大型语言模型&#xff08;LLM&#xff09;或深度学习算法作为“大脑”模块。它通过感知模块&#xff08;如多模态输入&#xff…

企业数字化转型是否已由信息化+自动化向智能化迈进?

DeepSeek引发的AI热潮迅速蔓延到了各个行业&#xff0c;目前接入DeepSeek的企业&#xff0c;涵盖了科技互联网、云服务、电信、金融、能源、汽车、手机等热门领域&#xff0c;甚至全国各地政府机构也纷纷引入。 在 DeepSeek 等国产 AI 技术的推动下&#xff0c;众多企业已经敏锐…

广州卓远VR受邀参加2025智能体育典型案例调研活动,并入驻国体华为运动健康联合实验室!

近日&#xff0c;“2025年智能体育典型案例调研活动”在东莞松山湖成功举办。本次调研活动由国家体育总局体育科学研究所和中国信息通信研究院联合主办&#xff0c;旨在深入贯彻中央关于培育新型消费的战略部署&#xff0c;通过激活智能健身产品消费潜力&#xff0c;加快运动健…

springboot+vue实现鲜花商城系统源码(带用户协同过滤个性化推荐算法)

今天教大家如何设计一个 鲜花商城 , 基于目前主流的技术&#xff1a;前端vue3&#xff0c;后端springboot。学习完这个项目&#xff0c;你将来找工作开发实际项目都会又很大帮助。文章最后部分还带来的项目的部署教程。 系统有着基于用户的协同过滤推荐算法&#xff0c;还有保证…

【android bluetooth 协议分析 02】【bluetooth hal 层详解 3】【高通蓝牙hal主要流程介绍-上】

1. 背景 本节主要讨论 高通 蓝牙 hal 中&#xff0c;的一些流程。 看看你是否都清楚如下问题&#xff1a; 高通芯片电如何控制&#xff1f;串口是在哪里控制的&#xff1f;固件如何下载&#xff1f;初始化流程是怎么样的&#xff1f; 如果你已经对上述讨论的问题&#xff0c…

JavaEE 初阶文件操作与 IO 详解

一、文件操作基础&#xff1a;File 类 作用&#xff1a;操作文件或目录&#xff08;创建、删除、获取信息&#xff09;。 核心方法&#xff1a; exists()&#xff1a;文件是否存在createNewFile()&#xff1a;创建新文件mkdir()&#xff1a;创建目录delete()&#xff1a;删除…

C++(27): 标准库 <iterator>

目录 1. 核心概念 2. 基本语法 3. 特点 4. 特有成员函数与工具 5. 内存与性能 6. 示例代码 7. 成员函数与类型 8. 使用场景 9. 注意事项 1. 核心概念 迭代器(Iterator) 是 C++ 中用于访问和遍历容器元素的通用接口,类似于指针,但支持更丰富的操作。 抽象访问机制:…

谈谈 Kotlin 中的构造方法,有哪些注意事项?

在 Kotlin 中&#xff0c;构造方法分为主构造方法&#xff08;Primary Constructor&#xff09;和次构造方法&#xff08;Secondary Constructor&#xff09;。 1 主构造方法 主构造方法是类的核心构造方法&#xff0c;直接在类头声明&#xff0c;位于类名之后。 1.1 基本语…

年会招标抽奖活动软件———仙盟创梦IDE

年会是企业一年的总结与欢庆时刻&#xff0c;而抽奖环节更是点燃全场气氛的关键。如何让抽奖环节既大气又充满仪式感&#xff1f;选对抽奖软件至关重要&#xff01;本文精心挑选了 3 款兼具实用性与氛围感的年会抽奖软件&#xff0c;从界面设计到功能特色&#xff0c;全方位为你…

安全软件检测进程异常行为-Postgresql应用执行异常指令whoami

文章目录 环境症状问题原因解决方案 环境 系统平台&#xff1a;UOS&#xff08;海光&#xff09; 版本&#xff1a;4.5.8 症状 数据库安装包&#xff1a; 安全软件告警中提示“sh -c whoami”命令&#xff0c;是由数据库发出的&#xff0c;安全软件捕获到了postgres.exe–fo…

车载诊断架构 --- LIN 节点 ECU 故障设计原则

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…