缓存滚动位置:解决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 小时前
Emmet 常用用法指南
前端·vue
怪我冷i13 小时前
Agent运行模式——ReAct和Plan-and-Execute
vue·agent·ai编程·ai写作
独自破碎E13 小时前
Spring Boot工程启动以后,怎么将数据库中已有的固定内容打入到Redis缓存中?
数据库·spring boot·缓存
此生只爱蛋14 小时前
【Redis】数据类型补充
数据库·redis·缓存
忧郁蓝调2618 小时前
Redis不停机数据迁移:基于 redis-shake 的跨实例 / 跨集群同步方案
运维·数据库·redis·阿里云·缓存·云原生·paas
奋斗べ青年.19 小时前
【redis】了解redis的主从和集群搭建
数据库·redis·缓存
铅笔侠_小龙虾1 天前
Ubuntu 搭建前端环境&Vue实战
linux·前端·ubuntu·vue
冥界摄政王1 天前
Cesium学习第一章 安装下载 基于vue3引入Cesium项目开发
vue·vue3·html5·webgl·cesium
五阿哥永琪1 天前
Caffeine 本地缓存
缓存
optimistic_chen1 天前
【Redis 系列】常用数据结构---String类型
数据结构·数据库·redis·缓存·string