缓存滚动位置:解决keep-alive组件缓存滚动位置失败问题

怎样在vue中缓存组件?大家都知道,使用keep-alive组件即可,但是使用keep-alive缓存页面后,发现虽然页面缓存成功了,但是列表的滚动条又自动回到了最上方。

是的,keep-alive组件是不会缓存滚动位置的

怎样缓存滚动位置呢?这是我们这一章讲的问题。

核心思想是在路由钩子函数中将滚动位置记录和复写。

在对应位置加入如下代码即可:

其中scrollBar是要获取到滚动内容的父元素,也就是含有滚动条的元素

javascript 复制代码
export default {
	data() {
		scroll: 0, //记录浏览位置
	},
	beforeRouteEnter(to, from, next) {
		next(vm => {
			const scrollBar = document.getElementsByClassName('content-scroll-list-wrap')[0]
			scrollBar.scrollTop = vm.scroll
		})
	},
	beforeRouteLeave(to, from, next) {
		const scrollBar = document.getElementsByClassName('content-scroll-list-wrap')[0]
		this.scroll = scrollBar.scrollTop;
		next()
	},
}
相关推荐
码农飞哥4 小时前
互联网大厂Java求职面试实战:Spring Boot到微服务的技术问答解析
java·spring boot·缓存·面试·消息队列·技术栈·microservices
程序员阿明7 小时前
vite运行只能访问localhost解决办法
前端·vue
GISer_Jing13 小时前
前端性能指标及优化策略——从加载、渲染和交互阶段分别解读详解并以Webpack+Vue项目为例进行解读
前端·javascript·vue
?abc!16 小时前
缓存(3):本地缓存作用 及 数据一致性 实现策略
缓存
Toky Zhu20 小时前
ubuntu清除缓存
linux·ubuntu·缓存
呦呦鹿鸣Rzh20 小时前
redis
数据库·redis·缓存
只因只因爆20 小时前
spark的缓存
大数据·缓存·spark
摘星编程21 小时前
Redis+Caffeine构建高性能二级缓存
数据库·redis·缓存
酷爱码1 天前
Nginx的核心功能--正向代理、反向代理、缓存和Rewrite
运维·nginx·缓存
hello_ejb31 天前
聊聊JetCache的缓存构建
java·前端·缓存