问题复现:一开始在vue移动端项目中使用的better-scroll滚动条的插件,后面做项目性能优化时,需要对该页面进行缓存。调试过程中发现页面无法滑动,真机测试中则是偶尔能滑动,偶尔不行。
问题分析:在使用better-scroll插件中,需要给滚动条设置当前高度,而使用keep-alive缓存页面后,则缺失了刷新滚动条的操作。
解决办法:我们可以使用activated生命周期钩子来进行滚动条刷新的操作。
关于activated生命周期钩子,在vue.js文档的这个位置:activated生命周期钩子
activated 类型:Function
被 keep-alive 缓存的组件激活时调用。
该钩子在服务器端渲染期间不被调用。
在需要刷新滚动条的页面添加一下方法:
//使用keepalive缓存后,由于滚动条没有刷新会发生卡死的问题
activated() {
if (!this.scroll) {
this.scroll = new Better(this.$refs.listView, {
probeType: 3,
click: true,
});
this.scroll.options.disableTouch = false;
} else {
this.scroll.refresh();
}
},