我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue中keepAlive组件的作用和使用方法详细介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue中keepAlive组件的作用和使用方法详细介绍

这篇文章主要讲解了“vue中keepAlive组件的作用和使用方法详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中keepAlive组件的作用和使用方法详细介绍”吧!

前言

在面试的时候,很多面试官再问vue的时候可能就会提一嘴,你知道keep-alive有什么作用吗?

keep-alive是vue内置的一个组件,而这个组件的作用就是能够缓存不活动的组件,我们能够知道,一般情况下,组件进行切换的时候,默认会进行销毁,如果有需求,某个组件切换后不进行销毁,而是保存之前的状态,那么就可以利用keep-alive来实现

<keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

<keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。

我这里利用脚手架创建项目后会生成home和about两个组件,并且通过路由进行切换

home组件

<template>  <div class="home">    <input type="text">  </div></template><script>// @ is an alias to /class="lazy" data-srcimport HelloWorld from '@/components/HelloWorld.vue'export default {  name: 'home',  components: {    HelloWorld  }}</script>

我在home组件中写了一个input输入框

about组件

<template>  <div class="about">    <input type="text">  </div></template><script>export default {  name:"about"}</script>

同样的about组件也放了一个输入框

vue中keepAlive组件的作用和使用方法详细介绍

当我们在home组件的输入框输入一些内容的时候,然后切换到about组件,在切换回home组件,我们会发现之前输入的内容被清空了,其实也容易理解,就是当切换到about组建的时候,home组件就被销毁了,输入框的值自然被清空了

vue中keepAlive组件的作用和使用方法详细介绍

我在home组件写了destroyed生命周期函数

vue中keepAlive组件的作用和使用方法详细介绍

当切换到about组件的时候home组件的destroyed就触发了,所以home组件被销毁了

那么此时我们就可以利用keep-alive组件进行包裹router-view组件,将不活动的组件缓存起来

App组件

<template>  <div id="app">    <div id="nav">      <router-link to="/">Home</router-link> |      <router-link to="/about">About</router-link>    </div>    <keep-alive>      <router-view />    </keep-alive>      </div></template>

写完之后会发现当切换到about组件时,home组件中的destroyed并没有触发,并且home组件的值也保存了下来

vue中keepAlive组件的作用和使用方法详细介绍

但是这样也肯定不好,我们会发现,about组件的值也被缓存了,就是所有的路由组件都被缓存了,严重浪费性能,而且也不符合需求,我们现在只想缓存home组件

在keep-alive上有两个属性

字符串或正则表达式。只有匹配的组件会被缓存。

  • include 值为字符串或者正则表达式匹配的组件name会被缓存。

  • exclude 值为字符串或正则表达式匹配的组件name不会被缓存。

首先利用include实现,匹配到组件中定义的name,将进行缓存

<keep-alive include="home">   <router-view /></keep-alive>

vue中keepAlive组件的作用和使用方法详细介绍

我们会发现home已经被缓存了,但是about没有被缓存

而exclude就是排除了,这个就不在演示了,很简单,除了这个我们还可以利用路由中的meta属性来控制

{      path: '/',      name: 'home',      meta:{        keepAlive:true      },      component: Home    }

将home的路由规则钟的meta添加keepAlive属性为true,也就是当前路由组件要进行缓存

keep-alive代码可以结合v-if进行包裹,如果meta中的keepAlive为true进行缓存,否侧不进行缓存,这样可以更灵活一些

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

这样组件的缓存是实现了,但是还是会有一些问题,就是因为组件被缓存,并没有被销毁,所以组件在切换的时候也就不会被重新创建,自然也就不会调用created等生命周期函数,所以此时要使用activated与deactivated来获取当前组件是否处于活动状态

我在home组件里面写入了activated与deactivated生命周期函数

activated(){    console.log("哎呀看见我了")    console.log("----------activated--------")  },  deactivated(){    console.log("讨厌!!你又走了")    console.log("----------deactivated--------")  }

vue中keepAlive组件的作用和使用方法详细介绍

通过上面的gif图相信已经看得很清楚了,此时keep-Alive也就差不多了

感谢各位的阅读,以上就是“vue中keepAlive组件的作用和使用方法详细介绍”的内容了,经过本文的学习后,相信大家对vue中keepAlive组件的作用和使用方法详细介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue中keepAlive组件的作用和使用方法详细介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue中keepAlive组件的作用和使用方法详细介绍

这篇文章主要讲解了“vue中keepAlive组件的作用和使用方法详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中keepAlive组件的作用和使用方法详细介绍”吧!前言在面试
2023-06-20

vue中缓存组件keepalive的介绍及使用方法

这篇文章主要介绍了vue缓存组件keepalive的相关资料,keep-alive组件是使用includeexclude这两个属性传入组件名称来确认哪些可以被缓存的,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
2022-11-13

详细介绍Github的使用方法

随着互联网技术的不断发展,越来越多的开发者开始加入到开源项目中,Github作为目前全球最大的代码托管平台之一,也成为了开发者们分享、学习、合作的重要工具之一。然而,如何使用Github来进行代码管理、版本控制、协作开发等,还是很多新手开发
2023-10-22

Android Service中方法使用详细介绍

service作为四大组件值得我们的更多的关注 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意
2022-06-06

React中setState/useState的使用方法详细介绍

这篇文章主要介绍了React中setState/useState的使用方法,useState和setState在React开发过程中使用很频繁,但很多人都停留在简单的使用阶段,并没有正在了解它们的执行机制
2023-05-14

Java中File文件操作类的详细使用介绍

文章目录 File类的使用File的介绍File常用API判断文件类型-获取文件信息创建文件-删除文件功能遍历文件夹 File类的使用 File的介绍 File的概述: File类在包java.io.Fil
2023-08-21

MySQL中Binlog日志的使用方法详细介绍

MySQLBinlog(二进制日志)记录数据库操作,用于数据复制、数据恢复和审计。启用后,记录修改操作并写入Binlog。通过不同格式和管理命令,可查看和管理Binlog。在主从复制中,Binlog用于同步数据变更。Binlog也可用于数据恢复,通过应用日志将数据库恢复到特定时间点。此外,Binlog可作为审计记录,提供操作历史、用户和时间等信息。建议始终启用Binlog,定期备份,监视大小,进行跨服务器复制和审计。
MySQL中Binlog日志的使用方法详细介绍
2024-04-02

ASP中文件上传组件ASPUpload介绍和使用方法

ASPUpload是一个用于在ASP网页中实现文件上传的组件。它提供了简单易用的接口和丰富的功能,方便开发者在网页中实现文件上传功能。使用方法如下:1. 首先,需要将ASPUpload组件添加到项目中。可以从官方网站(http://www.
2023-08-22

Python中lambda表达式的简要介绍和详细使用方法

Python中lambda函数的简介与用法详解在Python中,lambda函数是一种特殊的匿名函数,它可以在需要函数对象的任何地方使用。lambda函数通常用来定义一些简单的函数,它们可以只有一个表达式,并且返回结果。本文将向您介绍la
Python中lambda表达式的简要介绍和详细使用方法
2024-02-02

asp.net Repeater控件的说明及详细介绍及使用方法

Repeater 控件不具备内置的呈现功能,这表示用户必须通过创建模板为 Repeater 控件提供布局。当该页运行时,Repeater 控件依次通过数据源中的记录为每个记录呈现一个项。 他很简单,用起来也不够强大,但是应了那句老话,杀鸡焉
2022-06-07

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录