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

vue3中keep-alive的使用及结合transition使用

正确用法

  1. 在组件中使用(这里结合了 transition 内置动画组件 )
<template><div class="layout clearfix"><router-view v-slot="{ Component, route }"><transition name="fade-transform" mode="out-in" v-if="!route.meta.keepAlive"><component :is="Component" :key="route.name" /></transition><transition name="fade-transform" mode="out-in" v-if="route.meta.keepAlive"><keep-alive><component :is="Component" :key="route.name"/></keep-alive></transition></router-view></div>
</template><script setup>
import { onActivated, onDeactivated } from 'vue'
// 在 keep-alive 组件激活时调用
onActivated(() => {console.log('onActivated')
})
// 在 keep-alive 组件停用时调用
onDeactivated(() => {console.log('onDeactivated')
})
</script>
  1. 在router.js中配置 keepAlive 自定义属性
import { createRouter, createWebHistory } from 'vue-router'
const routes = [{path: '/',name: 'layout',component: () => import('../layout/index.vue'),children: [{path: '/home',name: 'home',component: () => import('../views/home.vue'),meta{title: '工作台',keepAlive: true}},]},{path: '/login',name: 'login',component: () => import('../views/login.vue')},{path: '/:pathMatch(.*)',component: () => import('../views/404.vue')}
]const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes
})export default router

根据条件缓存页面

<template><div id="app">// 1. 基本用法<router-view v-slot="{ Component, route }"><keep-alive><component :is="Component" :key="route.path"></component></keep-alive></router-view>// 2. 将缓存 name 为 a 或者 b 的组件,结合动态组件使用<router-view v-slot="{ Component, route }"><keep-alive include='a,b'><component :is="Component" key="route.path"></component></keep-alive></router-view>// 3. 使用正则表达式,需使用 v-bind<router-view v-slot="{ Component, route }"><keep-alive :include='/a|b/'><component :is="Component" key="route.path"></component></keep-alive>	</router-view>// 4.数组 (使用 `v-bind`)<router-view v-slot="{ Component, route }"><keep-alive include="['a', 'b']"><component :is="Component" key="route.path"></component></keep-alive>	</router-view>// 5.使用 max 通过传入 max 来限制可被缓存的最大组件实例数<router-view v-slot="{ Component, route }"><keep-alive :max="10"><component :is="Component" key="route.path"></component></keep-alive>	</router-view>// 6. 将不缓存 name 为 test 的组件<router-view v-slot="{ Component, route }"><keep-alive exclude='test'><component :is="Component" key="route.path"></component></keep-alive>	</router-view></div>
</template><script setup></script>

错误示例

  1. VueCompilerError: expects exactly one child element or component.
 <router-view v-slot="{ Component, route }"><transition name="fade-transform" mode="out-in" ><component :is="Component" :key="route.path" v-if="!route.meta.keepAlive"/><keep-alive><component :is="Component" :key="route.path" v-if="route.meta.keepAlive"/></keep-alive></transition>
</router-view>
  1. 不报错,但 keep-alive 内置组件的缓存没有效果,onActivated 函数也不会执行
 <router-view v-slot="{ Component, route }"><transition name="fade-transform" mode="out-in" ><component :is="Component" :key="route.path" v-if="!route.meta.keepAlive"/></transition><keep-alive><transition name="fade-transform" mode="out-in" ><component :is="Component" :key="route.path" v-if="route.meta.keepAlive"/></transition></keep-alive>
</router-view>

vue中keep-alive的使用及详解

http://www.lryc.cn/news/151691.html

相关文章:

  • 【提示工程】询问GPT返回Json结构数据
  • CSS水平垂直居中方案
  • SpringBoot入门篇3 - 整合junit、整合mybatis、基于SpringBoot实现ssm整合
  • C#,《小白学程序》第七课:列表(List)应用之一“编制高铁车次信息表”
  • 周报/月报 Prompt
  • c++ 学习 之 构造函数的分类和调用类型 深入学习
  • Royal TSX 6 Mac多协议远程软件
  • 远程管理通道安全SSH协议主机验证过程
  • .NET 操作 TDengine .NET ORM
  • SQL Server对象类型(3)——视图(View)
  • 【LeetCode】剑指 Offer <二刷>(1)
  • MySQL事物和存储引擎
  • 代码随想录算法训练营Day51 | 309. 最佳买卖股票时机含冷冻期 | 714. 买卖股票的最佳时机含手续费 | 股票总结
  • C#,《小白学程序》第八课:列表(List)应用之二“编制高铁列车时刻表”
  • 2、QT的信号与槽
  • Java代码审计15之Apache log4j2漏洞
  • c语言每日一练(13)
  • H5 + C3基础(六)(2D转换transform 位移 旋转 缩放)
  • 2023最新 Electron.js 桌面应用开发教程(基础篇)更新中
  • 【ES】笔记-Set集合实践
  • 缺陷或负样本难以收集怎么办?使用生成式模型自动生成训练样本,image-to-image Stable diffusion
  • ZMTP协议
  • ubuntu18安装中文环境
  • 怎么提取视频中的音乐保存到本地?其实方法很简单
  • 线性代数的学习和整理18:矩阵的秩的各种定理, 秩和维度(未完成)
  • UVa11374 Airport Express(Dijkstra)
  • hadoop的hdfs中避免因节点掉线产生网络风暴
  • 2023年高教社杯 国赛数学建模思路 - 案例:最短时间生产计划安排
  • Spring MVC介绍
  • 5年测试在职经验之谈:2年功能测试、3年自动化测试,从入门到不可自拔...