缓存滚动位置:解决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()
	},
}
相关推荐
Shi_haoliu7 小时前
SolidTime 在 Rocky Linux 9.5 上的完整部署流程
linux·运维·nginx·postgresql·vue·php·laravel
難釋懷15 小时前
Redis 通用命令
数据库·redis·缓存
2401_zq136y0316 小时前
Flutter for OpenHarmony:从零搭建今日资讯App(二十七)图片缓存的完整方案
flutter·缓存
2401_8582861116 小时前
从Redis 8.4.0源码看快速排序(1) 宏函数min和swapcode
c语言·数据库·redis·缓存·快速排序·宏函数
Codeking__18 小时前
Redis——事务
数据库·redis·缓存
Codeking__18 小时前
Redis——认识持久化、RDB、AOF
数据库·redis·缓存
Mast Sail18 小时前
WebStrom+Vitesse+Vue3项目路径报错爆红问题
vue·vite·webstorm
什么都不会的Tristan19 小时前
redis-原理篇-QuickList
数据库·redis·缓存
yuankunliu19 小时前
【redis】2、Redis的Value的常见数据类型以及使用场景
redis·缓存
想摆烂的不会研究的研究生20 小时前
MySQL海量数据深分页优化
数据库·redis·后端·mysql·缓存