当前位置: 首页 > wzjs >正文

网站建设学习视频公网信息发布渠道是什么

网站建设学习视频,公网信息发布渠道是什么,长沙公司名称大全,二七区网站建设KeepAlive 是 Vue 组件中的一个重要功能,主要用于缓存组件,以提升性能和用户体验。 目录 一、KeepAlive 基本概念二、KeepAlive 的核心原理三、KeepAlive 关键属性解析1. include:指定需要缓存的组件2. exclude:指定不需要缓存的组…

KeepAlive 是 Vue 组件中的一个重要功能,主要用于缓存组件,以提升性能和用户体验。

在这里插入图片描述

目录

      • 一、`KeepAlive` 基本概念
      • 二、`KeepAlive` 的核心原理
      • 三、`KeepAlive` 关键属性解析
        • 1. `include`:指定需要缓存的组件
        • 2. `exclude`:指定不需要缓存的组件
        • 3. `max`:最大缓存组件数
      • 四、`KeepAlive` 生命周期
      • 五、具体使用场景
      • 六、常见问题及解决方案
        • 1. **`activated` 和 `deactivated` 不触发**
        • 2. **`keep-alive` 组件缓存过多导致内存占用**
        • 3. **如何手动清除缓存**
        • 4. **如何手动清除 `keep-alive` 缓存**
      • 七、完整示例:结合 Vue Router
      • 八、总结


在这里插入图片描述

一、KeepAlive 基本概念

KeepAlive 是 Vue 内置的一个抽象组件,通常用于包裹动态组件,使其在切换时保持状态,而不是被销毁和重新创建。

主要作用:

  1. 缓存组件,避免重复创建和销毁,提升性能。
  2. 保持组件状态,例如表单填写、用户滚动位置等不会丢失。
  3. 适用于router-viewcomponent动态组件

基础使用示例:

<template><keep-alive><component :is="currentView"></component></keep-alive>
</template><script>
import A from "./A.vue";
import B from "./B.vue";export default {data() {return {currentView: "A"};},components: { A, B }
};
</script>

在上述代码中,<component :is="currentView">会根据currentView的值动态切换组件,但由于keep-alive的存在,被切换出去的组件不会被销毁,而是被缓存。


二、KeepAlive 的核心原理

  1. 组件挂载与缓存

    • Vue 在创建组件时,会判断是否被 KeepAlive 包裹,如果是,则不会销毁,而是将其存储在 cache 对象中。
    • 当组件被切换回来时,会从 cache 取出,而不会重新创建实例。
  2. 缓存管理

    • KeepAlive 组件通过 includeexclude 规则控制哪些组件需要缓存,哪些不需要。
  3. 生命周期钩子

    • activated():组件被缓存后激活时触发。
    • deactivated():组件被缓存但切换出去时触发。

三、KeepAlive 关键属性解析

1. include:指定需要缓存的组件

可以是字符串、正则表达式或数组:

<keep-alive :include="['A', 'B']"><router-view></router-view>
</keep-alive>

这样只有 AB 组件会被缓存。

2. exclude:指定不需要缓存的组件
<keep-alive :exclude="/^Temp/"><router-view></router-view>
</keep-alive>

所有以 Temp 开头的组件都不会被缓存。

3. max:最大缓存组件数
<keep-alive :max="2"><router-view></router-view>
</keep-alive>

最多缓存 2 个组件,超过后会删除最久未使用的组件。


四、KeepAlive 生命周期

组件被 keep-alive 缓存时,不会触发 createdmounted,但会触发以下钩子:

  1. activated():组件从缓存中激活
  2. deactivated():组件被缓存但未销毁

示例:

<script>
export default {created() {console.log("组件创建");},mounted() {console.log("组件挂载");},activated() {console.log("组件被激活");},deactivated() {console.log("组件被缓存");}
};
</script>

生命周期触发顺序

  • 首次进入createdmountedactivated
  • 切换离开deactivated
  • 再次进入activated

五、具体使用场景

  1. 配合 router-view,缓存某些路由

    <keep-alive><router-view></router-view>
    </keep-alive>
    
    • 这样切换路由时,已访问的组件会被缓存。
  2. 结合 include 指定缓存页面

    <keep-alive :include="['Home', 'Profile']"><router-view></router-view>
    </keep-alive>
    
    • 只有 HomeProfile 页面会被缓存。
  3. 结合 exclude 过滤不需要缓存的页面

    <keep-alive :exclude="['Login']"><router-view></router-view>
    </keep-alive>
    
    • Login 页面不会被缓存,其他页面都会缓存。
  4. 动态组件缓存

    <keep-alive><component :is="currentComponent"></component>
    </keep-alive>
    
    • 切换组件时不会销毁原组件。

六、常见问题及解决方案

1. activateddeactivated 不触发
  • 确保组件确实被 keep-alive 包裹,并且是动态组件。
2. keep-alive 组件缓存过多导致内存占用
  • 使用 max 限制缓存数:
    <keep-alive :max="3"><router-view></router-view>
    </keep-alive>
    
3. 如何手动清除缓存
this.$destroy(); // 清除当前组件缓存

或者

this.$parent.$forceUpdate(); // 强制更新
4. 如何手动清除 keep-alive 缓存

可以使用 key 强制重新渲染:

<keep-alive><component :is="currentComponent" :key="currentKey"></component>
</keep-alive>

每次切换 currentKey,都会重新渲染组件。


七、完整示例:结合 Vue Router

<template><div><button @click="currentView = 'Home'">Home</button><button @click="currentView = 'About'">About</button><keep-alive><component :is="currentView"></component></keep-alive></div>
</template><script>
import Home from "./Home.vue";
import About from "./About.vue";export default {data() {return {currentView: "Home"};},components: { Home, About }
};
</script>

在这里:

  • HomeAbout 组件可以自由切换,并且会被 keep-alive 缓存。

八、总结

  1. KeepAlive 主要用于缓存动态组件,避免重复创建和销毁,提高性能。
  2. 关键属性:
    • include 指定缓存组件。
    • exclude 排除不需要缓存的组件。
    • max 限制最大缓存数。
  3. 组件生命周期:
    • activated() 组件被激活
    • deactivated() 组件被缓存
  4. 适用于 router-viewcomponent 组件,适合缓存列表、表单、复杂页面状态。

如果在项目中正确使用 KeepAlive,可以大幅提升前端性能,避免页面状态丢失,提高用户体验。


文章转载自:

http://Yj7W7mxs.ndpwg.cn
http://qW4JD9Q5.ndpwg.cn
http://LdIhxtco.ndpwg.cn
http://o3yvumxY.ndpwg.cn
http://fwLplNP7.ndpwg.cn
http://LnjXkETi.ndpwg.cn
http://Og3tcDpa.ndpwg.cn
http://mH2DADCb.ndpwg.cn
http://SxJT7qVH.ndpwg.cn
http://LwIrf32L.ndpwg.cn
http://rWNJPOd5.ndpwg.cn
http://ArpMVb9Y.ndpwg.cn
http://qkB0kdB7.ndpwg.cn
http://NkyXIPxP.ndpwg.cn
http://s5LtQYEh.ndpwg.cn
http://HmR0rpBb.ndpwg.cn
http://rqB2yG5z.ndpwg.cn
http://OTJxrohD.ndpwg.cn
http://LibzNrFA.ndpwg.cn
http://BUg4ltnC.ndpwg.cn
http://7wOxM45h.ndpwg.cn
http://pyckwYTb.ndpwg.cn
http://iIdLXR6H.ndpwg.cn
http://2qYV7Saj.ndpwg.cn
http://R0pLm34Y.ndpwg.cn
http://qoWBnfSQ.ndpwg.cn
http://JfLwsgZ8.ndpwg.cn
http://8UHiTxiv.ndpwg.cn
http://bbnMoBzJ.ndpwg.cn
http://BHmGAVZW.ndpwg.cn
http://www.dtcms.com/wzjs/742563.html

相关文章:

  • 网站备案都需要什么江苏建设厅执业网站
  • 十大图片素材网站南京网上注册公司流程
  • 做外贸生意上哪个网站网站充值如何做post的
  • html做网站需要服务器吗wordpress链接在哪里设置密码
  • 常州经开区建设局网站谷歌英文网站
  • 网站建设需要注意哪些王也手机壁纸
  • 黄冈公司做网站wordpress投稿者用户权限
  • 网站建设项目网络图淘宝网站建设那么便宜
  • 网站建设推广销售话术专门做lolh的网站
  • linux网站管理面板如何做Google外贸网站
  • 做列表的网站dedecms模板安装
  • 公司网站关键词优化怎么做宁波跨境电商公司排名前十
  • 有个找人做任务赚返佣的网站live2d wordpress
  • 内容网站互联网保险乱象
  • 江干区网站建设自助网站搭建
  • 网站的充值是怎么做的做网站优化如何写方案
  • 垂直网站导航是谁做的室内设计培训
  • 做百度推广的网站吗软件开发软件开发网站
  • 航天基地规划建设局网站关键词排名优化易下拉排名
  • 网站盗号怎么做怎么经营网店生意才会好
  • 第一个做电子商务的网站长春网站制作价格
  • 做网站外国的高校网站建设策划
  • 龙岩企业网站建设制作网页版qq官网
  • 装修设计公司网站四川省建设领域信用系统网站
  • 没有备案的网站百度能收录吗wordpress 的数据库路径
  • 大型网站集群怎么做邯郸wap网站建设
  • 什么平台可以做网站推广建设银行大厂支行网站
  • 做建材的网站毕设做网站和app
  • 大酒店网站源代码wordpress 完全静态化
  • 灵犀科技网站开发佼佼者石家庄网站建设需要多少钱