缓存滚动位置:解决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()
	},
}
相关推荐
MuYiLuck1 小时前
【redis实战篇】第八天
数据库·redis·缓存
宇宙的最后一粒尘埃1 小时前
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
vue
互联网搬砖老肖3 小时前
Web 架构之缓存策略实战:从本地缓存到分布式缓存
前端·缓存·架构
半桔14 小时前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
一个有女朋友的程序员15 小时前
Spring Boot 缓存注解详解:@Cacheable、@CachePut、@CacheEvict(超详细实战版)
spring boot·redis·缓存
yuren_xia16 小时前
在Spring Boot中集成Redis进行缓存
spring boot·redis·缓存
清幽竹客17 小时前
vue-18(使用 Vuex 插件实现高级功能)
前端·vue.js·前端框架·vue
Lonely丶墨轩18 小时前
Redis 缓存策略:借助缓存优化数据库性能并保障数据一致性
数据库·redis·缓存
牧码岛19 小时前
Web前端之隐藏元素方式的区别、Vue循环标签的时候在同一标签上隐藏元素的解决办法、hidden、display、visibility
前端·css·vue·html·web·web前端
趁你还年轻_1 天前
Redis大量key集中过期怎么办
数据库·redis·缓存