缓存滚动位置:解决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()
	},
}
相关推荐
力江15 小时前
FastAPI 最佳架构实践,从混乱到优雅的进化之路
python·缓存·架构·单元测试·fastapi·分页·企业
今天不要写bug15 小时前
基于qrcode前端实现链接转二维码的生成与下载
前端·javascript·typescript·vue
屋外雨大,惊蛰出没15 小时前
小白安装Redis
数据库·redis·缓存
剑小麟16 小时前
vue2项目中安装vant报错的解决办法
vue.js·java-ee·vue
Maiko Star19 小时前
基于Redis ZSet实现多维度题目贡献度排行榜
数据库·redis·缓存
你真的可爱呀21 小时前
4.前后端联调(Vue3+Vite + Express + MySQL)
mysql·node.js·vue·express
前端老曹1 天前
vue3 三级路由无法缓存的终极解决方案
前端·javascript·vue.js·vue
pingcode1 天前
IDEA清除缓存
缓存·intellij-idea
不会写程序的未来程序员1 天前
Redis 缓存
数据库·redis·缓存
脸大是真的好~1 天前
黑马消息队列-rabbitMQ2-生产者重连机制-生产者确认机制-数据持久化-LazyQueue-消费者确认机制-失败重试机制-重试耗尽告警手动处理-
java·缓存·中间件