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

网站每天做100个外链/合肥seo代理商

网站每天做100个外链,合肥seo代理商,做木箱的网站,网页qq邮箱怎么发文件keep-alive是vue的内置组件,它的主要作用是对组件进行缓存,避免组件在切换时被重复创建和销毁,从而提高应用的性能和用户体验。它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。使用时,只需要将需要缓存的组件包…

keep-alive是vue的内置组件,它的主要作用是对组件进行缓存,避免组件在切换时被重复创建和销毁,从而提高应用的性能和用户体验。它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。使用时,只需要将需要缓存的组件包裹在keep-alive标签内即可。

使用

首先声明两个组件keepCompont1.vue,keepCompont2.vue 

<template><div><p>这是 keepCompont1</p><input v-model="inputValue" placeholder="输入内容"></div></template><script>export default {data() {return {inputValue: ''};},created() {console.log('keepCompont1 created');},mounted() {console.log('keepCompont1 mounted');},activated() {console.log('keepCompont1 activated');},deactivated() {console.log('keepCompont1 deactivated');},destroyed() {console.log('keepCompont1 destroyed');}};</script><style scoped></style>
<template><div><p>这是 keepCompont2</p><input v-model="inputValue" placeholder="输入内容"></div></template><script>export default {data() {return {inputValue: ''};},created() {console.log('keepCompont2 created');},mounted() {console.log('keepCompont2 mounted');},activated() {console.log('keepCompont2 activated');},deactivated() {console.log('keepCompont2 deactivated');},destroyed() {console.log('keepCompont2 destroyed');}};</script><style scoped></style>

生命周期里面打印了信息来确认那些生命周期执行了,activated和deactivated是keep-alive组件特有的生命周期,组件被激活执行activated,组件隐藏的时候执行deactivated。对于vue生命周期不理解的可以看下这里,详细说了下生命周期的作用和执行顺序。vue生命周期和应用

父组件代码:

<template><div><button @click="toggleComponent">切换组件</button><keep-alive ><!-- is绑定的值即为当前显示的组件,需要切换的时候需要动态绑定。  --><component :is="currentComponent"></component></keep-alive></div>
</template><script>
import keepCompont1 from "@/components/keepCompont1.vue";
import keepCompont2 from "@/components/keepCompont2.vue";
export default {components: {keepCompont1,keepCompont2,},data() {return {// 默认显示keepCompont1组件currentComponent: "keepCompont1",};},methods: {// 修改currentComponent的值来切换组件toggleComponent() {//  this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2'; //  三元运算符做了一个判断 //  this.currentComponent === 'keepCompont2'为true //  则把keepCompont1 赋值给this.currentComponent。false则把keepCompont2赋值过去this.currentComponent = this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2';},},
};
</script>

运行效果:

当页面加载完成后可以看到keepCompont1组件的created,mounted,activated生命周期函数执行了。

keepCompont1组件的输入框输入内容1111,点击切换按钮。keepCompont2组件显示出来且created,mounted,activated生命周期函数执行且keepCompont1组件隐藏了且执行了deactivated

 然后我们来验证keepCompont1组件刚才输入的内容1111 是否缓存上了,这里在组件2的输入框里面输入222,然后点击切换按钮。

切换回来后可以看到输入框里面的1111还在,并且从打印的生命周期上可以看到destroyed钩子函数并没有执行也就是说没有销毁在重新创建组件。 在次点击切换按钮可以看到组件2里面的2222也是存在的。整个过程destroyed钩子函数都没有执行

keep-alive组件有三个常用的属性:include,exclude,max

 include

include值为字符串或正则表达式,只有名称匹配的组件会被缓存,如果不使用include属性则默认缓存所有。这里在创建一个keepCompont3组件,内容和keepCompont1和keepCompont2一样的唯一区别就是修改下生命周期的打印,这里就不在粘贴重复的代码了。稍微修改下父组件

<template><div><button @click="toggleComponent">切换组件</button><!-- 添加一个按钮 用来显示组件3 --><button @click="show3">显示组件3</button><keep-alive include="keepCompont1,keepCompont2"><!-- is绑定的值即为当前显示的组件,需要切换的时候需要动态绑定。  --><component :is="currentComponent"></component></keep-alive></div>
</template><script>
import keepCompont1 from "@/components/keepCompont1.vue";
import keepCompont2 from "@/components/keepCompont2.vue";
import keepCompont3 from "@/components/keepCompont3.vue";
export default {components: {keepCompont1,keepCompont2,keepCompont3},data() {return {// 默认显示keepCompont1组件currentComponent: "keepCompont1",};},methods: {// 修改currentComponent的值来切换组件toggleComponent() {// this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2'; 三元运算符做了一个判断 //  this.currentComponent === 'keepCompont2'为true 则把keepCompont1 赋值给this.currentComponent。// false则把keepCompont2赋值过去this.currentComponent = this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2';},show3(){this.currentComponent = 'keepCompont3'}},
};
</script>

这里include没有包含keepCompont3组件,当组件3隐藏在出现的时候不会缓存输入框里面的值,因为组件被销毁了,执行了destroyed生命周期函数

这里可以看到当最后进入组件3的时候,组件3的created钩子函数也执行了,说明组件又重新创建了。

exclude

值为字符串或正则表达式,名称匹配的组件不会被缓存。

 <keep-alive include="keepCompont1,keepCompont2,keepCompont2" exclude="keepCompont2"><!-- is绑定的值即为当前显示的组件,需要切换的时候需要动态绑定。  --><component :is="currentComponent"></component></keep-alive>

运行效果

max 

值为数字,最多可以缓存多少组件实例。假如存储的实例大于设置的数字,则会触发LUR淘汰机制。比如:假如设置最大缓存数量为2,先切换到了组件1和组件2,此时组件1,组件2会被缓存,当切换到组件3的时候,由于已经到了最大缓存数量,组件1和组件2中最久没有使用的那个组件实例会被淘汰。

LRU 算法的核心思想是:当缓存空间满了需要淘汰一个元素时,会选择最久没有被访问过的元素进行淘汰。

end

后续更新一些keep-alive组件的使用场景demo(如有误欢迎指正)

http://www.whsansanxincailiao.cn/news/31976130.html

相关文章:

  • 开网站做销售/十大营销策略
  • 广东网站建设微信商城运营/西安竞价推广托管
  • 用word文档做网站/做网站用什么软件好
  • 乡村别墅室内装修设计效果图/宁波seo推广
  • 公司注册步骤流程/四川seo哪里有
  • 网站被攻击了怎么办/seo优化中商品权重主要由什么决定
  • 网站上一页下一页怎么做/百度有什么办法刷排名
  • 二级域名著名网站/汽车营销活动策划方案
  • 网站建设实训分析总结/网络媒体有哪些
  • 哪个网站旅游攻略做的最好/百度seo是什么
  • 江西中恒建设集团网站/网页设计实训报告
  • 会计上网站建设做什么费用/app推广项目从哪接一手
  • 网站运营优化建议/黑锋网seo
  • 赣州人才网招聘信息/网站怎样优化文章关键词
  • 互联网行业新闻的靠谱网站/seo sem论坛
  • 陕西建设人才网站/广州seo运营
  • 网站建设与规划方案书/谷歌广告
  • 网站建设氺首选金手指12/朋友圈营销
  • 北京网站建设公司空间续费北京/sem竞价开户
  • 建筑案例分析网站/网站设计论文
  • wordpress 页面 html/北京seo产品
  • 做小程序好还是做微网站好/谷歌seo网站建设
  • 税务门户网站建设成果/万网建站
  • 深圳罗湖企业网站/搜索引擎优化原理
  • 深圳做企业网站的公司/百度网址大全网站大全
  • 蓝色机械企业网站模板/免费的拓客平台有哪些
  • pc网站 手机网站 微信公众平台/系统优化软件推荐
  • 手机模板网站开发/杭州制作公司网站
  • 如何开设网站/广州短视频代运营
  • 自己做一网站/关键词优化软件哪家好