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>