缓存滚动位置:解决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()
	},
}
相关推荐
箫笙默11 小时前
Vue3基础笔记
笔记·vue·vue3
Codeking__12 小时前
Redis的value类型介绍——set
数据库·redis·缓存
Codeking__14 小时前
Redis的value类型介绍——list
数据库·redis·缓存
我科绝伦(Huanhuan Zhou)15 小时前
PostgreSQL存储管理核心技术解析:架构、页面模型与缓存机制
缓存·postgresql·架构
難釋懷15 小时前
Redis简单介绍
数据库·redis·缓存
ChineHe15 小时前
Redis数据类型篇003_详解Lists列表类型及其命令
数据库·redis·缓存
爱学英语的程序员15 小时前
让AI 帮我做了个个人博客(附提示词!)
人工智能·git·vue·github·node·个人博客
Codeking__16 小时前
Redis的value类型及编码方式介绍——string
数据库·redis·缓存
五仁火烧16 小时前
Vite和HTTP 服务器
服务器·网络协议·http·vue
奔跑的web.17 小时前
TypeScript 全面详解:对象类型的语法规则
开发语言·前端·javascript·typescript·vue