vuejs中缓存组件状态-keepAlive

前言

在 vuejs中,我们经常需要缓存一些组件的状态,比如用户登录后,切换到其他页面,再切换回来,需要保留之前的登录状态,而不是重新登录。

或者在切换不同组件的时候,需要保留之前的组件状态,而不是重新加载。如果你什么都不设置

你会发现,之前已更改的状态都被重置了。

在切换时创建新的组件实例通常是有意义的,但在有些情况下,我们的确想要组件能在被"切走"的时候保留它们的状态。要解决这个问题,我们可以用 <KeepAlive> 内置组件将这些动态组件包装起来

代码示例

go 复制代码
<!-- 非活跃的组件将会被缓存! -->
<KeepAlive>
  <component :is="activeComponent" />
</KeepAlive>

包含(include)与排除(exclude)

<KeepAlive> 默认会缓存内部的所有组件实例,但我们可以通过 include 和 exclude 的prop 来控制组件的缓存与不缓存的。这两个 prop 的值都可以是一个以英文逗号分隔的字符串、一个正则表达式,或是包含这两种类型的一个数组

go 复制代码
<!-- 以英文逗号分隔的字符串,a,b代表的是组件 -->
<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>

它会根据组件的 name 选项进行匹配,所以组件如果想要条件性地被 KeepAlive缓存,就必须显式声明一个 name选项

注意事项

使用<script setup> 的单文件组件会自动根据文件名生成对应的 name 选项,无需再手动声明

<>

前后端联调前-一个前端动手写代码前的思考
<>

2023-09-21

<>

如何判断一个女生是不是假正经
<>

2023-09-20

<>

vue3+vite安装element-plus报错解决-使用组件不起作用
<>

2023-09-18

<>

vite构建的本地开发环境请求第三方接口时如何解决跨域问题
<>

2023-09-17

<>

VuePress网站如何使用axios请求第三方接口
<>

2023-09-16

<>

前后端开发接口联调对接参数
<>

2023-09-13

<>

Vue中实现全景房看图3D
<>

2023-09-11

相关推荐
wangxiaoxuan2172 分钟前
SLAM 的基本结构:前端、后端、回环与地图优化
前端·机器人·科沃斯八界
总要学点什么2 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
Agent世界3 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
FungLeo3 小时前
成为全栈·Vue 管理后台篇·编辑器图片上传:从文件选择到文章附件关联
前端·vue.js·编辑器·markdown·文件上传·formdata·附件管理
总要学点什么3 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
某哈压力大3 小时前
SSH 突然 Connection reset?不是密钥坏了,是 OpenSSL 把 sshd 干趴了
前端·node.js·命令行
程序员大阳3 小时前
副队长ES6+教程(3)--解构赋值
前端·javascript·es6·赋值·解构
神膘护体小月半4 小时前
css - 元素背景图由 hover 触发,初次加载时闪动的解决办法
前端·javascript·css
程序员大阳4 小时前
副队长ES6+教程(2)--let 与 const
前端·javascript·es6·const·let·var
deli0074 小时前
写满 200GB 后 SSD 为什么掉到 95MB/s?SLC 缓存模型实测
前端