【vue进阶之旅】如何使用keep-alive做组件缓存?

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

前言

今天我要给大家分享的是如何使用keep-alive做组件缓存?

为什么要做组件缓存?什么场景下会用到组件缓存?或许很多小伙伴根本不知道keep-alive这个组件,也或许知道keep-alive可以做组件缓存,但是却从来没有实践过,懵懵懂懂,刚好我曾经有过使用keep-alive做组件缓存相关的项目经验,现在我就给大家分享一下keep-alive这个组件到底是怎么回事?在项目中应该怎么用?应该注意些什么?

keep-alive的使用场景?

现在给大家讲一讲keep-alive的使用场景,比如你在购物网站,不断地滚动屏幕,当滚动到了很久很久,你突然发现一件你很喜欢的商品,你点击进入详情,当你查看了该商品的详情,返回出来要保持之前的位置继续往下浏览商品,你会怎么做?再比如你在一个页面有多个tab,默认是会选中第一个tab,当你在第二个tab切换到其他页面的时候(比如对应tab的详情),再次返回到当前的页面,要保持你去之前的tab和对应的状态,你会怎么做?

这里如果没有使用组件缓存的话,当你点击商品详情页面,当前商品列表的页面就会销毁,当你从商品详情返回到商品列表的时候,这个页面已经重新进行了构建,是不会保存在你之前刚刚浏览的位置的,又会返回到最顶上的位置,这个时候你让用户再重复把刚刚的内容再刷一遍吗?而用户的需求是继续之前的位置,可以接着往下滑。切换tab的场景也是这样的道理,不会保存你离开之前的状态,下面我会深入讲解。

vue的八大生命周期

我目前写了一个tab案例,帮助大家理解keep-alive,对应的逻辑和代码如下: 一共有tab1和tab2两个页面,点击按钮会显示对应tab的内容,点击color按钮,会变更内容的颜色,同时会在控制台打印所有生命周期。

<template><div><h1>keep-alive组件缓存</h1><Button type="success" @click="Success()">tab1</Button><Button type="warning" @click="warning()" style="margin-left:30px">tab2</Button><Button type="error" @click="error()" style="margin-left:30px">color</Button><div style="margin-top:50px"><h2 v-if="success" :class="{active1: isActive === true}" >我是tab1的内容</h2><h2 v-if="!success" :cla
Vue3第二十二章】KeepAlive缓存组件 使用keep-alive的好处就是,在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性。 阅读详情

相关推荐

vue列表页面缓存 keep-alive,列表跳转详情页面,列表页面缓存

A页面 B页面:列表页面 C页面:详情页面 需求A页面跳转B页面时,B页面需要加载最新数据;C页面跳转B页面时,B页面的数据是A页面跳转到B页面的数据 代码: router-view: <keep-alive> <router-view v-if="$route.meta.keepAlive" /> </keep-alive> <rout...

高山景行,一尘不染 3753

Vuekeep-alive 缓存组件如何正确刷新?

keep-alive 缓存组件怎么刷新」= 默认不会重新执行 mounted,需要手动触发。用「onActivated 刷新数据 + key 强制重建 + include/exclude 精准控制」三件套,让缓存组件该刷就刷、该留就留!最后问候亲爱的朋友们,并邀请你们阅读我的全新著作📚《Vue.js 3企业级项目开发实战(微课视频版》

有我更精彩的博客 642

前端 - Vue】之 Keep-Alive缓存组件使用语法及原理解析,超详细!

keep-alivevue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。本篇讲解Keep-Alive缓存组件使用语法及原理解析,超详细!

共同学习,共同成长 3346

vue组件缓存keep-alive正确使用姿势

em...新的问题又出现了,由于 列表页被缓存了,这个时候我从首页,再点击进入某个列表,也不刷新了,完了,点击首页导航应该进入不同的列表页的. 也就是说,从首页进入列表组件不应该被缓存的。但是但是,我们的项目是用vue开发的webapp,多个组件共用一个窗口,当我们切换路由时,切出路由组件会销毁,所有列表页进入详情页列表页会销毁,重新回到列表页,列表页组件会重新加载。这样需求,如果是小程序的话,默认列表页就会缓存,因为小程序的运行环境是微信客户端,当我们打开一个页面会新建一个webview,

越是安静内敛的人,越容易生不惊人死不休 8189

Vuekeep-alive缓存的详解(深度理解)

keep-alivevue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM,keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们

常来常往,共同成长 1万+

vue使用keep-alive进行组件缓存(解决组件缓存问题)

vue使用keep-alive进行组件缓存(解决组件缓存问题)

pipizhou16的博客 8675

vue中动态添加和删除组件缓存 keep-alive

Vue的抽象组件,自身不会渲染一个DOM元素,也不会出现在父组件链中,能将组件在切换过程中将状态保存在内存中,防止重复渲染DOM;包裹动态组建时,会缓存不活动的组件实例,而不是销毁它们;当组件在 <keep-alive>内被切换时,它的activated和deactivated这两个生命周期钩子函数将会被执行。include 和 exclude 属性允许组件有条件地缓存。二者都可以用逗号分隔字符串、正则表达式或一个数组来表示,max:最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存

刘运召的博客 1万+

vue使用keep-alive缓存页面优化项目

keep-alive是什么? <keep-alive> 标签:是Vue的内置组件,能在组件切换过程中将状态保留在内存中,取消组件的销毁函数,防止重复渲染DOM。 当用它包裹 <router-view> 时,会缓存不活动的组件实例,而不是销毁它们。 和 <transition> 相似,它自身不会渲染一个 DOM 元素。 使用 <keep-alive>...

田兴的博客 6520

vue中如何使用keep-alive动态删除已缓存组件

后台管理系统的时候,有这样一个需求。点击左边的菜单,会在右边的顶部生成一个个tag导航标签。当打开多个tag页时,用户可以在多个tag之间进行切换。需要在新增,修改页面切换tag时候,保留之前的信息,不进行页面的刷新。经过查询vue文档,可以使用keep-alive实现标签路由缓存,实现方式如下: 在路由配置的meta中添加keepAlive,如下: 然后在页面中使用v-if判断,并且加上key 使用上面这种方式解决了修改不同记录的缓存问题,因为不同记录的fullPath 不一样,...

FighterLiu的专栏 5751

vue 使用 keep-alive

vue3 使用 keep-alive 踩坑踩了半天!!! 我这里的小 DEMO 是,首先打开主页是新闻的界面 然后我点击跳转到消息界面 之后我想要的效果,是跳转到其他的页面之后,我再次回到首页,那么他的页面还是保持在消息的界面 这里注意,是要给哪个页面进行缓存就给哪个页面添加 keepAlive:true !!!第二步!!!,在 App.vue 界面中添加 keep-alive,注意下面这种写法是 vue3 的新写法,之前都是 keep-alive将 router-view 包裹住的 !!!第三步!!

qq_45770253的博客 1万+

Vue keep-alive 详细介绍(动态组件、路由组件缓存优化)

用法 keep-aliveVue的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 transition 相似,keep-alive 是一个抽象组件:它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中。当组件在<keep-alive>内被切换,它的activated和deactivated这两个生命周期钩子函数将会被对应执行。 在 2.2.0 及其更高版本中,activated和deactivated将会在<keep-ali...

高大志leo的博客 5880

keep-alive缓存

keep-alive缓存

weixin_62407339的博客 1831

若依学习笔记(二)

因为是一级分类 而是下面对应的页面,需要设置对应的路径和权限等信息选择菜单名称前面的小图标可以在源文件内添加自己需要的图标再选择显示的目录/菜单名称就是目录/菜单的展示顺序 基本是从1开始向后排序如果选择 则路由地址需要以 ‘’ 开头访问的动态路由地址 比如 ‘选择隐藏 则该路由不会出现在左侧边栏 但是可以通过路由去访问选择停用 则该路由不会出现在左侧边栏 并且不能访问由于新增菜单和新增目录有重合的 所以这里只写不重合的地方访问的组件路径 例如: ‘’ 默认是在’’目录下的。

huilang041的博客 702

keep-alive 组件缓存

【怎么用】:一般用这个内置组件可以包裹住动态组件(component)或路由出口的地方,它提供的也有 include 属性可以控制缓存哪些组件名,exclude 属性控制不缓存哪些组件,它对应的也有两个钩子,分别是激活时触发的 activated 和失活时触发的 deactivated。组件缓存是指在前端开发中,将已经渲染的组件实例缓存起来,以便在需要重新使用时直接从缓存中获取,而不需要重新创建和渲染新的组件实例。组件,它可以将包裹的组件实例进行缓存,并在需要时直接获取缓存的实例。

seven_sevens的博客 458

Vuekeep-alive 缓存组件

当在 Vue.js使用 组件时,它将会缓存动态组件,而不是每次渲染都销毁和重新创建它们。这对于需要在组件间快速切换并且保持组件状态的情况非常有用。 只能包含(或者说只能渲染)一个子组件,如果需要包含多个子组件,需要用 选择某个确定的组件进行渲染。也可以使用 或其他组件标签将它们包裹起来,再通过 选择确定的某个组件进行渲染。因此 标签里面有且只有一个子节点(或者说只能渲染一个子节点)。这些子组件可以通过动态组件或者其他方式进行切换。当一个被 组件包裹的组件被切换出去时,它的状态将会被保留在内存中

小秀的博客 4328

记录--Vue缓存组件 | 详解KeepAlive

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 一. keep-alive 的作用 二. keep-alive 的原理 三. keep-alive 的应用 四. keep-alive 的刷新 五. keep-alive 页面缓存思路 一. keep-alive 的作用 首先引用官网文档介绍:keep-alive官方文档 Vuekeep-alive为抽象组件,主要...

林恒的博客 1998
上一篇: 【Electron】vue+electron代码签名(mac篇)
下一篇: 【动效实现】超酷炫的 3D 视差 Hover 效果
梅花十三儿
博客等级 码龄5年 1035粉丝 444原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值