缓存滚动位置:解决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()
	},
}
相关推荐
JH30732 小时前
Redis 中被忽视的“键过期策略”与内存回收机制
数据库·redis·缓存
Microsoft Word2 小时前
Redis常见面试题
数据库·redis·缓存
dudke2 小时前
c#实现redis的调用与基础类
数据库·redis·缓存
小马爱打代码4 小时前
MyBatis:进阶 - 动态 SQL、关联查询与缓存
sql·缓存·mybatis
AI3D_WebEngineer15 小时前
企业级业务平台项目设计、架构、业务全解之组件库篇
前端·javascript·vue
tuokuac18 小时前
ps -ef | grep redis
数据库·redis·缓存
⑩-18 小时前
如何保证Redis和Mysql数据缓存一致性?
java·数据库·redis·mysql·spring·缓存·java-ee
刘一说21 小时前
深入理解 Spring Boot 中的 Redis 缓存集成:从基础配置到高可用实践
spring boot·redis·缓存
JJCar21 小时前
【Cache缓存】分配策略
缓存·cache·多核数据一致性
木子李BLOG21 小时前
vue.js设计与实现(待续)
vue