缓存滚动位置:解决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()
	},
}
相关推荐
૮・ﻌ・17 小时前
小兔鲜电商项目(一):项目准备、Layout模块、Home模块
前端·javascript·vue
无心使然云中漫步17 小时前
vant实现自定义日期时间选择器(年月日时分秒)
前端·vue
Q的世界19 小时前
redis源码编译安装
数据库·redis·缓存
C_心欲无痕19 小时前
vue3 - 内置组件KeepAlive优化组件状态缓存
前端·vue.js·缓存
卡布叻_星星21 小时前
创建基于 Vue3 且将 request.js(请求封装)与页面 .vue 解耦的项目
vue
大布布将军21 小时前
⚡️ 性能加速器:利用 Redis 实现接口高性能缓存
前端·数据库·经验分享·redis·程序人生·缓存·node.js
_OP_CHEN1 天前
【C++数据结构进阶】吃透 LRU Cache缓存算法:O (1) 效率缓存设计全解析
数据结构·数据库·c++·缓存·线程安全·内存优化·lru
消失的旧时光-19431 天前
Repository 层如何无缝接入本地缓存 / 数据库
数据库·flutter·缓存
stand_forever1 天前
redis秒杀实现
redis·缓存·php
消失的旧时光-19431 天前
用 Drift 实现 Repository 无缝接入本地缓存/数据库(SWR:先快后准)
数据库·flutter·缓存