13 vue3之内置组件keep-alive

news2024/11/15 6:53:27

内置组件keep-alive

有时候我们不希望组件被重新渲染影响使用体验;或者处于性能考虑,避免多次重复渲染降低性能。而是希望组件可以缓存下来,维持当前的状态。这时候就需要用到keep-alive组件。

开启keep-alive 生命周期的变化

初次进入时: onMounted> onActivated
退出后触发 onDeactivated
再次进入:
只会触发 onActivated
事件挂载的方法等,只执行一次的放在 onMounted中;组件每次进去执行的方法放在 onActivated

  prors属性 include 和 exclude和max

<keep-alive :include="" :exclude="" :max="10"></keep-alive>

    :include="['A']" 只缓存A组件

    :exclude="['A']" 不缓存A组件

    max是保存活性最高的10个组件 采用的是LRU算法(双向链表 + 散列表 的方式实现

代码示例

父组件

<template>
  <div class="">keep-alive用于数据缓存</div>
  <keep-alive>
    <A v-if="flag"></A>
    <B v-else></B>
  </keep-alive>
  <!--  
    prors属性:
    <keep-alive :include="" :exclude="" :max="10"></keep-alive>
    :include="['A']" 只缓存A组件
    :exclude="['A']" 不缓存A组件
    max是保存活性最高的10个组件 采用的是LRU算法(双向链表 + 散列表 的方式实现)
  -->
  <button @click="flag = !flag">切换组件</button>

  <!-- 必须是这样的写法 -->
  <!-- 基本 -->
  <keep-alive>
    <component :is="view"></component>
  </keep-alive>

  <!-- 多个条件判断的子组件 -->
  <keep-alive>
    <comp-a v-if="a > 1"></comp-a>
    <comp-b v-else></comp-b>
  </keep-alive>

  <!-- 和 `<transition>` 一起使用 -->
  <transition>
    <keep-alive>
      <component :is="view"></component>
    </keep-alive>
  </transition>

  <!-- 开启keep-alive 生命周期的变化

初次进入时: onMounted> onActivated
退出后触发 deactivated
再次进入:
只会触发 onActivated
事件挂载的方法等,只执行一次的放在 onMounted中;组件每次进去执行的方法放在 onActivated中
 -->
</template>

<script setup lang="ts">
import A from "./components/thirteen_A.vue";
import B from "./components/thirteen_B.vue";
import { ref, reactive } from "vue";

let flag = ref("true");
</script>

<style lang="less" scoped></style>

A B 组件

<template>
  <div class="">
    A组件
    <input type="text" />
  </div>
</template>

<script setup lang="ts">
import {
  ref,
  reactive,
  onMounted,
  onUnmounted,
  onActivated,
  onDeactivated,
} from "vue";

onMounted(() => {
  console.log("onMounted初始化"); // 全局只走一次,一个接口只走一次
});
onActivated(() => {
  console.log("onActivated,keep-alive初始化"); //开启了keep-alive后,才增加的生命周期
});
onDeactivated(() => {
  console.log("onDeactivated, keep-alive卸载"); //开启了keep-alive后,才增加的生命周期
});
onUnmounted(() => {
  console.log("onUnmounted卸载"); // 开启了keep-alive后 这个生命周期就不会走
});
</script>

<style lang="less" scoped></style>
<template>
  <div class="">
    B组件
    <input type="text" />
  </div>
</template>

<script setup lang="ts">
import { ref, reactive } from "vue";
</script>

<style lang="less" scoped></style>

14 vue3之内置组件trastion系列-CSDN博客14 vue3之内置组件trastion系列。https://blog.csdn.net/qq_37550440/article/details/142387006?sharetype=blogdetail&sharerId=142387006&sharerefer=PC&sharesource=qq_37550440&spm=1011.2480.3001.8118

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2150203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用express或koa或nginx部署history路由模式的单页面应用

使用hash模式会有#&#xff0c;影响美观&#xff0c;所以使用history模式会是个更好的选择。 前端项目打包上线部署&#xff0c;可以使用下面的方式部署history模式的项目&#xff0c;下面以 jyH5 为例 expressjs部署 express脚手架搭建的app.js中添加如下代码&#xff1a; …

大模型团队招人(校招):阿里巴巴智能信息,2025届春招来了!

阿里巴巴智能信息&#xff0c;2025届春招开始啦&#xff0c;欢迎有意向的优秀同学扫码投递。实习的内容也是大语言模型的核心方向Alignment&#xff0c;在这里有丰富的实验资源、良好的数据支持、优秀的师兄师姐带领你进入大模型的全新领域。内推直达&#xff1a;https://talen…

【Python】探索 Blinker:Python 进程内信号/事件分发系统

没人疼就去健身 &#xff0c;练完浑身疼&#xff01; 在现代软件开发中&#xff0c;事件驱动编程是一种非常强大的模式&#xff0c;它允许系统组件之间进行松散耦合的通信。Blinker 是一个 Python 库&#xff0c;提供了一个快速的进程内信号/事件分发系统&#xff0c;使得事件…

Double-Fetch漏洞检测工具的部署、使用与原理分析

文章目录 前言1、概述1.1、简介1.2、工作原理1.2.1、内核空间与用户空间的信息传递1.2.2、Double-Fetch漏洞产生的原因1.2.3、产生Double-Fetch漏洞的情况1.2.4、一个Double-Fetch漏洞示例1.2.5、Double-Fetch漏洞检测工具原理 1.3、模式匹配原理分析1.3.1、Coccinelle介绍1.3.…

AN7563PT数据手册学习笔记1

AN7563PT AN7563PT1 Overview2 Feature3 Block Diagram AN7563PT 1 Overview AN7563PT是一款高度集成的单芯片解决方案&#xff0c;适用于以太网网关应用。集成4个千兆以太网物理层、1个DDR4/DDR3控制器、1个USB3.0主机接口、1个USB2.0主机接口、2个PCIe Gen2单通道、1个VoIP…

什么是损失函数?常见的损失函数有哪些?

损失函数 什么是损失函数&#xff1f;损失函数作用如何设计损失函数常见的损失函数有哪些&#xff1f; 什么是损失函数&#xff1f; 损失函数&#xff08;Loss Function&#xff09;&#xff0c;也称为误差函数&#xff0c;是机器学习和深度学习中的一个重要概念。它用于衡量模…

光伏设计软件的基本功能

一、屋顶绘制 光伏设计软件的首要功能是屋顶绘制。通过直观易用的界面&#xff0c;可以轻松绘制出建筑物的屋顶轮廓、结构细节等基本信息。软件支持多种屋顶类型的绘制&#xff0c;并允许用户自定义屋顶尺寸和形状。 二、参照物、障碍物放置 在光伏系统设计中&#xff0c;参照…

2024考研数学真题解析-数二:

第一类间断点&#xff1a;可去间断点&#xff0c;跳跃间断点。 幂指函数x的取值范围是x>0。 接着分母不能为0推出x1&#xff0c;x2是间断点&#xff0c;由幂指函数x>0可知&#xff0c;x0也是间断点。 先求x0处的极限&#xff0c;这里没有必要求0左右两边的极限&#xff0…

如何下载旧版本app或者旧版本的电脑软件?下载旧版本手机app和电脑软件的方法

下载旧版本软件的方法介绍&#xff0c;下面以下载旧版本剪映为例&#xff1a;

Java标识符、关键字和保留字

Java中的标识符、关键字和保留字 标识符概念标识符命名规则&#xff08;必须遵守&#xff09;标识符命名规范&#xff08;更加专业&#xff09;关键字保留字 标识符概念 1.Java对各种变量、方法和类等命名时使用的字符序列称为标识符。 2.凡是自己可以起名字的地方都叫标识符 …

鸿蒙生态应用

鸿蒙生态应用开发核心概念 HarmonyOS 应用&#xff1a;使用 HarmonyOS SDK 开发的应用程序&#xff0c;能够在华为终端设备 &#xff08;如&#xff1a;手机、平板等&#xff09;上运行&#xff0c;其有两种形态&#xff1a; ⚫ 传统方式的需要安装的 App。 ⚫ 轻量级&#xf…

ABAP 一步一步教你添加ALV界面菜单功能按钮

ABAP 一步一步教你添加菜单功能按钮。 程序里面找到这个组件小按钮 就可以看到GUI状态了。 在修改GUI STATUS 是如果要添加一个功能按钮&#xff0c;必须先创建一个功能键&#xff08;具体参照下方&#xff09;&#xff0c;之后再在应用程序工具栏输入该功能键的功能码否则报…

(c++)线程的创建、互斥锁的使用、线程数组

1.创建10个线程&#xff0c;每个线程都做10万次全局变量num1操作&#xff0c;然后输出这个全局变量&#xff0c;预想结果应该是100万。但是线程可能在cpu分配的一个时间片中做不完10万次1的操作&#xff0c;这时候cpu会被其他线程抢占&#xff0c;由于num1不是一个原子操作&…

MySQL的缓存策略

目录 一、MySQL 缓存方案用来干什么 二、提升MySQL访问性能的方式 1、读写分离&#xff08;MySQL的主从复制&#xff09; 2、连接池 3、异步连接 三、缓存方案是怎么解决的 1、缓存与MySQL一致性状态分析 2、制定热点数据的读写策略 四、缓存方案问题的解决方法 1、缓…

Python画笔案例-055 绘制七彩浪花

1、绘制七彩浪花 通过 python 的turtle 库绘制 七彩浪花&#xff0c;如下图&#xff1a; 2、实现代码 绘制七彩浪花&#xff0c;以下为实现代码&#xff1a; """七彩浪花.py """ import turtlecs [red,orange,yellow,green,cyan,blue,magenta]…

网络流之最大流(EK 模板)

EK的时间复杂度是O( )。 EK 算法 和 dinic 算法的区别是 &#xff1a;EK是通过 bfs 找到一条增广流&#xff0c;然后累加&#xff0c;循环此步骤直到 bfs 找不到增广流&#xff1b;而 dinic 算法 是通过 bfs 分层找到一条增广流&#xff0c;然后通过 dfs 跑完 当前分层图中所…

Redis基本命令详解

1. 基本命令 命令不区分大小写&#xff0c;而key是区分大小写的 # select 数据库间的切换 数据库共计16个 127.0.0.1:6379> select 1# dbsize 返回当前数据库的 key 的数量 127.0.0.1:6379[1]> dbsize# keys * 查看数据库所有的key 127.0.0.1:6379[1]> keys *# fl…

[Spring]Spring MVC 请求和响应及用到的注解

文章目录 一. Maven二. SpringBoot三. Spring MVC四. MVC注解1. RequestMapping2. RequestParam3. PathVariable4. RequestPart5. CookieValue6. SessionAttribute7. RequestHeader8. RestController9. ResponseBody 五. 请求六. 响应 一. Maven Maven是⼀个项⽬管理⼯具。基于…

qwen2.5 vllm推理;openai function call调用中文离线agents使用

参考: https://qwenlm.github.io/zh/blog/qwen2.5/ https://qwen.readthedocs.io/zh-cn/latest/framework/function_call.html#vllm 安装: pip install -U vllm -i https://pypi.tuna.tsinghua.edu.cn/simplevllm-0.6.1.post2 运行:</

预测合理交易目标:中断形态趋势分析

日常交易时&#xff0c;我们除了通过判断一些重要指标来预测趋势走向之外&#xff0c;观察趋势的形态变化也是我们技术分析中很重要的分析方式。而识别并理解这些形态可以为交易者提供进出场的关键信号。今天我们就来说说其中一种形态——中断形态&#xff01; 中继形态在市场…