keepAlive的使用体验

博主在后台管理项目中,遇到详情页返回列表页默认刷新第一页的问题,尝试用cookie存筛选条件很麻烦且不符合要求。查询得知大家多用keep-alive,经摸索调好。还介绍了页面第一次进入和缓存后的生命周期,以及修改部分代码实现功能的情况。

keepAlive的使用体验

因为在做后台管理的项目,详情页返回列表页,总是默认刷新第一页,尝试cookie存下列表筛选条件,在返回页面的时候加入条件再查询,非常麻烦又难以控制,而且仍然是请求数据,不符合要求;查询百度感觉大家都在用keep-alive,就在空闲时间慢慢调整这个,今天终于调好了,热烈庆祝

清楚了生命周期就会明白一点,以下是查询的信息
第一次进入页面的生命周期:beforeRouterEnter ->created->…->activated->…->deactivated
缓存之后的声明周期:beforeRouterEnter ->activated->deactivated

这在我测试的时候帮助很大,因为是慢慢摸索的(捂脸)

{
   path: 'list',
   component: () => import('@/views/product/list'),
   name: 'productList',
   meta: {
     title: '商品列表',
     keepAlive: true // 重点注意!!!!
   }
 },
<!-- AppMain.vue -->
<!-- 因为我这边是嵌套AppMain.vue的组件, 网上大部分都是在App.vue里写的,这里有一点不一样 -->
<transition name="fade-transform" mode="out-in">
	<keep-alive>
		<router-view v-if="$route.meta.keepAlive"/>
	</keep-alive>
</transition>
<transition name="fade-transform" mode="out-in">
	<router-view v-if="!$route.meta.keepAlive" :key="key"/>
</transition>
// list.vue
created() {
  this.getList()
},
beforeRouteEnter(to, from, next) {
  if (to.name === 'productList' && from.name === 'ProductSkuM') {
    to.meta.keepAlive = true // 让列表页缓存,即不刷新
    next()
  } else {
    to.meta.keepAlive = false // 让列表页即不缓存刷新
    next()
  }
},
activated() {
  console.log('缓存') // 方便我测试看的
},

根据查的资料,目前修改的就这三个地方,功能就实现了。但是我真的试了很多次,一直没效果
影响结果的重要代码是

<!-- AppMain.vue -->
<transition name="fade-transform" mode="out-in">
  <keep-alive :include="cachedViews"><!-- :include="cachedViews" 这里去掉 -->
    <router-view v-if="$route.meta.keepAlive" :key="key"/><!-- 这里影响不大 -->
  </keep-alive>
</transition>
<transition name="fade-transform" mode="out-in">
  <router-view v-if="!$route.meta.keepAlive" :key="key"/>
</transition>

我去掉就好了,我表示很绝望啊,在前方大哥的基础上改代码不敢妄动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值