Vue组件——动态、缓存、异步组件

news2024/11/23 23:31:34

1. 动态组件 component

语法:静态:<component is="组件名"></component>

           动态:<component :is="组件名"></component>

可以用来实现页面的切换:

// 模板
    <component :is="n"></component>
    <button @click="fn('Box1')">btn_box1</button>
    <button @click="fn('Box2')">btn_box2</button>
    <button @click="this.n = 'Box3'">btn_box3</button>

// 方法
<script>
// 同步引入组件
import Box1 from "./components/Box1.vue"
import Box2 from "./components/Box2.vue"
import Box3 from "./components/Box3.vue"
export default{
    methods: {
        fn(arg) {
            this.n = arg
        }
    },
}
</script>

问题:当我们在其中一个组件中写了一个输入框,在输入过一次后,切换到其他页面然后再切换回来时,之前输入的值就没有了。因为切换走当前组件时,该组件就销毁了,再切换回来时,又会重新挂载一次,所以前面的操作就都没有了。

想要实现即时我切换走当前组件,下次切换回来时之前的操作还在,就可以使用缓存组件,将该组件缓存起来。

2. 缓存组件——keep-alive

2.1 语法——与动态组件搭配使用

<keep-alive> <component is="组件名"></component> </keep-alive>

1. 属性include:包括谁就只缓存谁 

           exclude:除了xx,其余都缓存

写法:1. include="Box1"  用得多

           2. :include="/Box1|Box3/"  加了:时等号后面的为js语言环境,可以写正则表达式

           3. :include="变量名"

简单使用案例:缓存Box1,Box3组件,也就是切换走时不销毁这两个组件;切换走Box2时,Box2就销毁了,下次切换到Box2时,该组件就mounted一次。

        <keep-alive include="Box1,Box3">
            <component :is="n"></component>
        </keep-alive>

         此时也出现了一个问题,当我在1组件勾选了一些选项时,切换到2组件又勾选了其他的选项,再切换回1组件,它缓存了之前的数据,就不会新增后面的筛选条件。比如说:在逛淘宝的时候,我先搜索了短袖,在筛选组件中勾选了几个筛选条件,那它展示的商品就会限定在一定范围内一般会在生命周期函数的mounted函数中实现首屏数据,当

2.2 缓存组件的两个钩子函数——activated/deactivated

        1. 活跃状态——activated

        渲染函数,切换一次页面,就调用一次渲染函数,回到这个组件时做操作(比如再做网络请求)activated() { console.log("box1渲染了一次"); }

        2. 失效状态——deactivated

        用于切换前缓存用户的数据。之前介绍生命周期函数时,缓存用户关闭页面前的相关数据(比如:音乐、视频播放事件),可以在销毁钩子(unmounted)中实现,但前面缓存在组件,缓存的组件不会销毁,也就是没有销毁钩子。但又想实现上面写的问题,所以Vue框架提供了deactivated函数来缓存用户的最后操作。离开这个组件时做操作deactivated() { }

简单案例:基于上面的动态组件

// Box1组件
// 1. template标签内
// 双向数据绑定v-model
<input type="text" v-model="email"><br>
<input type="text" v-model="tel">

// 2. script标签内
<script>
export default {
   activated() {
        console.log("box1渲染了一次");        
    },
    // 离开这个组件时做操作
    deactivated() {
        console.log("缓存用户离开Box1前的数据");
        // 这里缓存用户离开该组件前的数据
    }
}
</script>

3. 异步组件

类似于懒加载,先不将组件全部打包,当切换到该组件时才打包这个组件,可以提高效率,节省内存。

语法:

Vue2.x:Box1:()=> import("./components/Box1.vue"),

Vue3.x:先引入 import {defineAsyncComponent} from "vue"

               用法:Box1: defineAsyncComponent(()=> import("./components/Box1.vue")),

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

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

相关文章

目标检测数据集---三星工业缺陷数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

如何利用工业RFID识别设备帮助企业提高产品质量?

ANDEAWELL作为国内知名的工业识别设备厂家&#xff0c;今天就跟大家一起来了解一下&#xff0c;企业如何利用工业RFID识别设备帮助企业提高产品质量。 1. 严格的质量控制流程 在生产过程中&#xff0c;我们需要建立一套严格的质量控制流程。这个流程应该包括原材料的采购、生产…

【前端 - CSS】第 16 课 - 伪类选择器(鼠标悬停状态)

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、伪类选择器 3、伪类 - 超链接&#xff08;拓展&#xff09; 4、总结 1、缘起 在 CSS 中&#xff0c;我们使用 hover…

4、nacos服务的linux部署

1、下载nacoz注册中心 Nacos 快速开始通过这个里面查找地址进行下载, 2、下载之后通过xshell的xftp上传到服务器上&#xff0c;比如上传到home下的soft&#xff0c;如果没有soft进行创建 chmod对文件夹进行授权&#xff0c;不然xftp应该上传不到这个文件夹 3、解压缩 解压缩之…

【笔试强训选择题】Day26.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

100种思维模型之复利原理-77

关于复利&#xff0c;有一个广为流传的故事&#xff0c;相信大家都听过&#xff1a;在国际象棋的棋盘上&#xff0c;第一个格子放1粒米&#xff0c;第二格翻倍放2粒&#xff0c;第三格再翻倍放4粒&#xff0c;以此类推&#xff0c;下一格都是前一格的一倍&#xff0c;一直放到最…

Stimulsoft Reports用户手册:Report Designer介绍

Stimulsoft Reports.Net是一个基于.NET框架的报表生成器&#xff0c;能够帮助你创建结构、功能丰富的报表。StimulReport.Net 的报表设计器不仅界面友好&#xff0c;而且使用便捷&#xff0c;能够让你轻松创建所有报表&#xff1b;该报表设计器在报表设计过程中以及报表运行的过…

005、体系结构之TiKV_Raft日志

Raft日志 1、Raft与Multi Raft2、Raft 日志复制2.1、复制流程总览2.2、Propose2.3、Append2.3、Replicate(Append)2.4 Committed2.4 Apply 3、Raft Leader 选举3.1、原理3.2、节点故障Leader&#xff08;主副本&#xff09;选举⽇志复制 1、Raft与Multi Raft 一个region的大小是…

MPI期末复习指南

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; C/C专栏 &#x1f319;那些看似波澜不惊的日复一日&#xff0c;…

国家版权局正版化检查工具添加自定义检查软件及问题处理

使用国家版权局正版化检查工具进行软件正版化检查时&#xff0c;根据各个单位购买的正版化软件的不同&#xff0c;需要将自购软件和禁用软件增加到检查清单&#xff0c;本文件介绍添加自定义检查软件的方法及问题处理。 一、检查清单文件介绍及修改方法 国家版权局正版化检查工…

SpringMVC Controller 接收页面传递的中文参数出现乱码

问题描述 今天在使用SpringMVC做项目时候 controller 参数出现乱码 按照网上的搜索结果 对tomcat的server.xml和项目中的web.xml做出配置如下 在tomcat的server.xml中找到Connector标签然后对他重新配置 <Connector port"8080" protocol"HTTP/1.1"co…

Falcon 登陆 Hugging Face 生态

引言 Falcon 是由位于阿布扎比的 技术创新研究院 (Technology Innovation Institute, TII) 创建的一系列的新语言模型&#xff0c;其基于 Apache 2.0 许可发布。值得注意的是&#xff0c;Falcon-40B 是首个“真正开放”的模型&#xff0c;其能力可与当前许多闭源模型相媲美。这…

MySQL | 深入了解如何最大化利用 MySQL 函数(一)

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL字符串函数和数学函数的讲解✨ 目录 前言一、字符串函数二、数学函数三、总结 一、字符串函数 函数作用UPPER(列|字符串)将字符串每个字符转为大写LOWER(列|字符串)将字符串每个字符转为小写CONCAT(str1,str2,…

AI 写作,30 秒上手,可别再说写作没思路了

你经常要与文字打交道吗&#xff0c;是不是也会有以下困惑&#xff1f; 写作难下笔写不好&#xff1f;课程制作难缺灵感&#xff1f;营销文案没吸引力&#xff1f;PPT制作耗时费力&#xff1f;短视频脚本没创意&#xff1f; ChatGPT 出现以后&#xff0c;嗅觉灵敏的先行者&…

线程同步(三)

目录 条件变量 条件变量操作函数函数原型&#xff1a; 线程阻塞函数&#xff1a; 唤醒阻塞线程&#xff1a; 生产者和消费者模型 信号量函数 生产者和消费者模型 总结 条件变量 条件变量是一种线程间同步的机制&#xff0c;用于协调线程之间的操作。当一个线程正在等待某…

浅谈银桥乳业局域网设计与实现_kaic

摘 要 迈入二十一世纪&#xff0c;在互联网智能制造的加持下。各公司企业不断提升管理制造能力。云计算、新基建、大数据等技术日新月异。不断冲击着管理方式。企业局域网作为企业基建基础到越来越变得重要的。伴随着企业财务业务一体化的需求。ERP系统、CRM系统、HR系统、MES…

动态域名服务 DDNS,YYDS(四)

来源&#xff1a;公众号【鱼鹰谈单片机】 作者&#xff1a;鱼鹰Osprey ID &#xff1a;emOsprey 前面的笔记《如何像访问百度一样访问家里的服务器&#xff1f;&#xff08;三&#xff09;》已经通过公网 IP 桥接&#xff0c;完成了基本功能&#xff0c;已经可以通过公网 IP…

面试问题总结---SLAM部分

1、本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应用,有接触SLAM、Linux、ROS、C/C++、DJI OSDK等; 3、参加工作后…

嵌入式软件开发岗位----求职过程记录(基础知识和面经总结)

1、本栏用来记录社招找工作过程中的内容&#xff0c;包括基础知识以及面试问题等&#xff0c;以便于后续个人回顾学习&#xff1b; 暂时只有2023年3月份&#xff0c;第一次社招找工作的过程&#xff1b; 2、个人经历&#xff1a; 研究生期间课题是SLAM在无人机上的应用&#xf…

深入理解 JavaScript Promise

1. 引言 JavaScript中的Promise是一种处理异步操作的机制&#xff0c;它提供了一种优雅的方式来处理回调函数地狱和异步代码的流程控制。本文将深入介绍JavaScript中的Promise&#xff0c;帮助读者更好地理解和应用Promise。 2. Promise的基本概念 Promise是一个代表异步操作…