Vue中keep-alive的作用

1、keep-alive的使用场景
  • 有时候我们在搜索页面不小心点了别的页面,返回的时候还想看到我们之前搜索过的数据时,这时候要用到keep-alive标签包裹组件,这时候我们的这个组件就被缓存下来了。
  • 商品列表页点击商品跳转到商品详情,返回后仍显示原有信息
  • 订单列表跳转到订单详情,返回,等等场景。

官网解释: 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 相似, 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。 当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。 在 2.2.0 及其更高版本中,activated 和 deactivated 将会在 树内的所有嵌套组件中触发。 主要用于保留组件状态或避免重新渲染

2、keep-alive的方法
  • 利用meta标签
  {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld,
	  meta:{
		keepAlive:true
		//true会被保存false不会被保存
		}
    },
  • 在需要缓存的router-view组件上包裹keep-alive组件
<keep-alive>
	//缓存所有的路由页面
	<router-view></router-view>
</keep-alive>
  • 直接包裹要缓存的组件
<keep-alive>
	//该组件会被缓存
	<App></App>
</keep-alive>
3、keep-alive的参数
  • include: 字符串或正则表达式。只有匹配的组件会被缓存。
  • exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。
  • activated 当keepalive包含的组件再次渲染的时候触发
  • deactived 当keepalive包含的组件销毁的时候触发:keepalive可以接收三个属性作为参数进行匹配对应的组件进行缓存
  • max 缓存组件的最大值:max类型为字符或者数字

代码理解:

<keep-alive include="test-keep-alive">
  <!-- 将缓存name为test-keep-alive的组件 -->
  <component></component>
</keep-alive>


<!-- 使用正则表达式,需使用v-bind -->
<keep-alive :include="/a|b/">
  <component :is="view"></component>
</keep-alive>


<keep-alive exclude="test-keep-alive">
  <!-- 将不缓存name为test-keep-alive的组件 -->
  <component></component>
</keep-alive>

// 如果缓存的组件超过了max设定的值5,那么将删除第一个缓存的组件
<keep-alive exclude="c" max="5">
 <component :is="currentView"/>
</keep-alive>
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值