keepAlive遇到的问题

17 篇文章 0 订阅

1. better-scroll与keep-alive一起使用会使页面卡住

解决:

activated () {
  this.$refs.scroll.refresh() || this.$refs.scroll.forceUpdate()
}

2.keepalive会记住滚动条的位置,BScroll的也会记住,但是用vuex改变数据,组件内有计算属性改变,就不会记住BScroll的位置

解决:用 router中的meta.scrollY来记住滚动位置

activated () {
  if (this.$route.meta && this.$route.meta.scrollY) {
    this.$refs.scroll.scrollTo(0, this.$route.meta.scrollY)
  }
},
beforeRouteLeave (to, from, next) {
  if (from.meta && (from.meta.scrollY || from.meta.scrollY === 0)) {
    from.meta.scrollY = this.$refs.scroll.scroll.y
  }
}

3. keepalive 中使用 include, exclude

记住 :

1. exclude匹配的name不是router中的name, 而是组件中 export default {}中的name

2. 想用多个路由, 可以使用多个字符串以逗号隔开或者数组, ’a,b' || [a,b] || zheng'z

3. 复杂情况可以使用: meta配合keepalive

<keep-alive>
   <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值