缓存滚动位置:解决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()
	},
}
相关推荐
難釋懷9 小时前
SpringDataRedis数据序列化器
redis·缓存
RoboWizard18 小时前
8TB SSD还有掉速问题吗?
人工智能·缓存·智能手机·电脑·金士顿
数据安全科普王21 小时前
HTTP缓存机制详解:强缓存 vs 协商缓存
网络协议·http·缓存
超级种码1 天前
Redis:Redis 常见问题及解决思路
数据库·redis·缓存
结衣结衣.1 天前
Redis中的string字符串介绍
数据库·redis·缓存
BD_Marathon1 天前
MyBatis的一级缓存
spring·缓存·mybatis
wanzhong23331 天前
开发日记13-响应式变量
开发语言·前端·javascript·vue
德迅云安全—珍珍1 天前
什么是 DNS 缓存投毒攻击,有什么防护措施
网络·缓存
txinyu的博客1 天前
CPU 缓存行
缓存
wanzhong23331 天前
开发日记14-vite配置多环境
服务器·前端·vue