缓存滚动位置:解决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 小时前
【Axios 实战】网络图片地址转 File 对象,附跨域解决方案
开发语言·前端·javascript·vue
SuperEugene11 小时前
前端模块化与 import/export入门:从「乱成一团」到「清晰可维护」
前端·javascript·面试·vue
cooldream200911 小时前
Conda 报错 InvalidArchiveError 深度排查与彻底解决指南:从缓存损坏到环境重建的完整思路
缓存·conda
空空潍12 小时前
Redis点评实战篇-关注推送
java·数据库·redis·缓存
青春:一叶知秋12 小时前
【Redis存储】持久化
数据库·redis·缓存
Rick19931 天前
如何保证数据库和Redis缓存一致性
数据库·redis·缓存
~央千澈~2 天前
优雅草正版授权系统 - 优雅草科技开源2月20日正式发布
python·vue·php·授权验证系统
万象.2 天前
redis缓存和分布式锁
redis·分布式·缓存
Roc.Chang2 天前
Vite 启动报错:listen EACCES: permission denied 0.0.0.0:80 解决方案
linux·前端·vue·vite
白太岁2 天前
Redis:(2) hiredis 使用、C++ 封装与连接池
c语言·c++·redis·缓存