缓存组件<keep-alive>

缓存组件<keep-alive>

1.组件作用

组件, 默认会缓存内部的所有组件实例,当组件需要缓存时首先考虑使用此组件。

2.使用场景

场景1:tab切换时,对应的组件保持原状态,使用keep-alive组件

使用:KeepAlive | Vue.js,参考官网即可。

场景2:路由切换回来时如果需要保持当前路由界面下的状态,就需要使用缓存。

使用:

1.定义路由时添加字段标识 isKeepAlive,防止缓存所有路由

 {"path": "/home",
  "name": "home",
  "component": "/home/index",
   "label": "首页",
   "meta": {
       "icon": "home",
       "title": "首页",
       "isKeepAlive": false
     }
 }

2.使用 <router-view/>

<!--如果字段标识缓存,就缓存,否则不缓存--> 
<!--$route表示路由信息--> 
<router-view v-slot="{ Component }">
   <keep-alive>
     <component :is="Component" v-if="$route.meta.isKeepAlive" :key="$route.fullPath" />
   </keep-alive>
   <component :is="Component" v-if="!$route.meta.isKeepAlive" :key="$route.fullPath" />
</router-view>

3.可能的报错

报错内容:parentComponent.ctx.deactivate is not a function

解决: 给component添加key属性,否则在触发deactivate钩子时会出问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值