返回顶部
首页 > 资讯 > 精选 >vue3项目中keepAlive的使用方法是什么
  • 542
分享到

vue3项目中keepAlive的使用方法是什么

2023-06-22 06:06:58 542人浏览 泡泡鱼
摘要

vue3项目中keepAlive的使用方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。keepalive是Vue的内置组件,作用是将组件缓存在内存当中,

vue3项目中keepAlive的使用方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

keepalive是Vue的内置组件,作用是将组件缓存在内存当中,防止重复渲染DOM,属于消耗内存获取速度。希望对大家有帮助。

常用的用法是将组件或者路由缓存,现有的用法vue2.x与vue3.x有部分差别。以下主要将keepaliev在vue3.0中的用法。

通常我们可以配置整个页面缓存或只让特定的某个组件保持缓存信息,配置了keepalive的路由或者组件,只会在页面初始化的时候执行created->mounted生命周期,第二次及以后再进入该页面将不会执行改生命周期,而是会去读取缓存信息。

1、router配置缓存

1)第一步:配置App.vue
vue2.x与vue3.0的App.vue配置有差异,在App.vue配置信息如下:
vue2.x中,router-view可整个放入keepalive中,如下:

<template><!-- vue2.x配置 -->   <keep-alive>    <router-view v-if="$route.meta.keepAlive" />  </keep-alive>  <router-view v-if="!$route.meta.keepAlive"/></template>

vue3.0的App.vue配置方法如下:

<template>  <!-- vue3.0配置 -->  <router-view v-slot="{ Component }">    <keep-alive>      <component :is="Component"  v-if="$route.meta.keepAlive"/>    </keep-alive>    <component :is="Component"  v-if="!$route.meta.keepAlive"/>  </router-view> </template>

这里component是vue中的特殊组件,:is是用来绑定指定组件,这里是与路由对应的页面绑定。

2)第二步:添加meta属性
在对应的路由上添加meta属性来设置页面是否要使用缓存,如下:

{  path: "/keepAliveTest",   name: "keepAliveTest",   meta: {       keepAlive: true //设置页面是否需要使用缓存   },   component: () => import("@/views/keepAliveTest/index.vue") },

到此即可实现页面的简单缓存,但是有些场景需要做复杂处理,比如说页面部分信息不需要读缓存,每次进入都需要进行处理,这个时候我们就可以使用activated生命周期来解决页面部分刷新问题。

3)实现页面部分刷新
先了解vue的生命周期,被keepAlive包裹的组件和页面,页面进入时执行的生命周期为:created->mounted->activated;
其中created->mounted是页面第一次进入才会执行,activated生命周期在页面每次进入都会执行,特属于keepAlive的一个生命周期,所以我们把页面每次进来要进行的操作放入该生命周期即可。
如下代码:

activated() {// 页面每次进入将手机动态验证码置为空   this.$refs.mobPwdCode.inputValue = '';},

实现的功能是用户每次进入将动态验证码设为空,实现此功能也可以用其他方式,比如说将该组件放缓存外(参见2、component配置缓存)。

4)动态设置路由keepAlive属性
有些时候我们用完了keepalive缓存之后,想让页面不再保持缓存,或者设置下一个页面keepalive,也这个时候我们可以改变meta的keepAlive值来去除页面缓存,使用beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave,使用方式如下:

// to为即将跳转的路由,from为上一个页面路由beforeRouteLeave(to, from,+ next) {    // 设置下一个路由的 meta    to.meta.keepAlive = false;    next();}

2、组件配置缓存

1)使用场景

通常我们会对vue的一个页面进行缓存,然而有些时候我们仅需要缓存页面的某一个组件,或是在使用动态组件compnent进行组件切换时需要对组件进行缓存。

2)缓存页面指定组件

当用于App.vue时,所有的路由对应的页面为项目所对应的组件,使用方法如下:
在keep-alive组件上使用include或exclude属性,如下:使用include
代表将缓存name为testKA的组件,

// APP.vue文件,将页面作为组件缓存<router-view v-slot="{ Component }">  <keep-alive include="testKA">    <component :is="Component"/>  </keep-alive></router-view>

在router对应的页面中,需要设置name属性,如下:

export default {    name:'testKA',// keep-alive中include属性匹配组件name    data() {return {}},    activated() {        // keepalive缓存的页面每次进入都会进行的生命周期    },}

此外,include用法还有如下:

<!-- 逗号分隔字符串 --><keep-alive include="a,b">  <component :is="view"></component></keep-alive><!-- 正则表达式 (使用 `v-bind`) --><keep-alive :include="/a|b/">  <component :is="view"></component></keep-alive><!-- 数组 (使用 `v-bind`) --><keep-alive :include="['a', 'b']">  <component :is="view"></component></keep-alive>

exclude用法与include用法相同,代表不被缓存的组件。此外,keep-alive还有一个max属性,代表缓存组件最大数量,一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。

<keep-alive :max="10">  <component :is="view"></component></keep-alive>

当用于某个页面进行组件切换时,用法与缓存路由相同,不过只是将页面降级为一个组件,父组件由App.vue降级为对应路由页面。

3)总结

在实战过程中,发现keepalive缓存组件时,不能跨级使用;,比如在App.vue中使用include属性进行name="a"匹配时,只能匹配缓存name为a的子组件(路由页面),而不能缓存name为"a"的孙子组件(子页面引的组件)。

若想缓存孙子组件,可以将整个子组件缓存,或者在子组件里再使用keepalive。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: vue3项目中keepAlive的使用方法是什么

本文链接: https://lsjlt.com/news/303100.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue3项目中keepAlive的使用方法是什么
    vue3项目中keepAlive的使用方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。keepalive是Vue的内置组件,作用是将组件缓存在内存当中,...
    99+
    2023-06-22
  • Vue项目中的keepAlive怎么使用
    这篇“Vue项目中的keepAlive怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue项目中的keepAlive...
    99+
    2023-06-30
  • vue3项目中使用tinymce的方法
    目录1、安装相关依赖2、下载中文包3. 引入皮肤和汉化包4. 封装组件:在src/components下新建TEditor.vue,并写入以下代码5. 注册及使用组件tinymce是...
    99+
    2023-05-17
    vue3使用tinymce vue使用tinymce
  • Vite创建Vue3项目及Vue3使用jsx的方法
    使用 yarn:yarn create @vitejs/app使用 npm:npm init @vitejs/app1. 输入项目名称这里输入我们的项目名称:vite-vue32. 选择框架这里选择我们需要集成的框架:vuevanilla:...
    99+
    2023-05-22
    Vue3 vite jsx
  • Vue3项目中的hooks怎么使用
    本篇内容介绍了“Vue3项目中的hooks怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!hooks 特点vue3 中的 hooks ...
    99+
    2023-07-06
  • vue3项目中怎么使用tinymce
    tinymce是一个功能齐全的富文本编辑器插件,但在vue中引入tinymce并不像别的Vue富文本插件一样那么顺利,tinymce本身并不适配Vue,还需要引入@tinymce/tinymce-vue,并且它是国外的富文本插件,没有通过中...
    99+
    2023-05-19
    Vue3 tinymce
  • Vue项目中keepAlive的使用说明(超级实用版)
    目录keepAlive的使用一共有三个步骤keepAlive的注意事项问题描述原因include and excludemaxkeepAlive的使用 在开发的过程中如果碰到经常浏览...
    99+
    2024-04-02
  • MVVMLight项目的绑定及使用方法是什么
    这篇文章主要介绍“MVVMLight项目的绑定及使用方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MVVMLight项目的绑定及使用方法是什么”文章能帮助大家解决问题。一、绑定: ...
    99+
    2023-06-29
  • vue3+ts使用Echarts的方法是什么
    本篇内容主要讲解“vue3+ts使用Echarts的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3+ts使用Echarts的方法是什么”吧!安装npm install...
    99+
    2023-07-05
  • Vue中mixins的使用方法及实际项目应用是什么
    这篇文章主要介绍了Vue中mixins的使用方法及实际项目应用是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中mixins的使用方法及实际项目应用是什么文章都会有所收获,下面我们一起来看看吧。(1)...
    99+
    2023-07-05
  • Vue3项目中的hooks的使用教程
    目录hooks 特点hooks 基本使用今天我们稍微说一下 vue3 项目中的 hooks 的使用,其实这个 hooks 呢是和 vue2 当中的 mixin 是类似的,学习过 vu...
    99+
    2022-11-13
    Vue3 hooks使用 Vue3 hooks
  • vue3的mixin混入使用方法是什么
    本篇内容主要讲解“vue3的mixin混入使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3的mixin混入使用方法是什么”吧!vue 2 中采用选项式API 如: ...
    99+
    2023-06-21
  • Vue3+Vue-cli4项目中使用腾讯滑块验证码的方法
    简介: 滑块验证码相比于传统的图片验证码具有以下优点: 验证码的具体验证不需要服务端去验证,服务端只需要核验验证结果即可。 验证码的实现不需要我们去了解,也不需要我...
    99+
    2024-04-02
  • Angular项目构建的方法是什么
    本篇内容介绍了“Angular项目构建的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!(1) 不...
    99+
    2024-04-02
  • nodejs项目部署的方法是什么
    Node.js项目的部署方法有多种,下面列举了一些常见的方法:1. 手动部署:将Node.js项目的文件复制到服务器上,并通过命令行...
    99+
    2023-09-27
    nodejs
  • eclipse导入项目的方法是什么
    导入项目到Eclipse有以下几种方法:1. 通过菜单导入:- 打开Eclipse,点击菜单栏上的 "File"。- 选择 "Imp...
    99+
    2023-09-22
    eclipse
  • TP6项目搭建的方法是什么
    这篇文章主要讲解了“TP6项目搭建的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TP6项目搭建的方法是什么”吧!thinkphp6 项目搭建记录创建项目composer ...
    99+
    2023-06-25
  • eclipse项目导入的方法是什么
    在Eclipse中导入一个项目,可以按照以下步骤操作: 打开Eclipse,点击菜单栏的“File” -> “Import”...
    99+
    2024-04-02
  • pycharm新建项目的方法是什么
    在PyCharm中新建项目的方法如下: 打开PyCharm,并点击菜单栏中的 “File” -> “New Project”...
    99+
    2024-04-02
  • Vue3中watch的用法是什么
    本篇内容主要讲解“Vue3中watch的用法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3中watch的用法是什么”吧!目录前言一、API介绍二、监听多个数据源三、侦听数组四、侦听...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作