缓存滚动位置:解决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()
	},
}
相关推荐
yg_小小程序员2 小时前
vue3中使用vuedraggable实现拖拽
typescript·vue
海海不掉头发5 小时前
苍穹外卖-day05redis 缓存的学习
学习·缓存
川石教育6 小时前
Vue前端开发-缓存优化
前端·javascript·vue.js·缓存·前端框架·vue·数据缓存
DT辰白7 小时前
基于Redis的网关鉴权方案与性能优化
数据库·redis·缓存
漫天转悠15 小时前
VScode中配置ESlint+Prettier详细步骤(图文详情)
vscode·vue
岁月变迁呀1 天前
Redis梳理
数据库·redis·缓存
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭1 天前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
Code apprenticeship1 天前
怎么利用Redis实现延时队列?
数据库·redis·缓存
落魄实习生1 天前
AI应用-本地模型实现AI生成PPT(简易版)
python·ai·vue·ppt
fpcc1 天前
跟我学c++中级篇——C++中的缓存利用
c++·缓存