vue3设置完overflow:auo后,跳转页面会保存滚动条位置的问题
时间: 2024-05-10 22:21:34 浏览: 7
在Vue3中,可以使用`keep-alive`组件来保存组件的状态,包括滚动条的位置。具体实现步骤如下:
1. 在需要保存滚动条位置的组件上添加`keep-alive`标签,如下所示:
```
<template>
<div>
<keep-alive>
<router-view />
</keep-alive>
</div>
</template>
```
2. 在路由配置中给需要保存滚动条位置的路由添加`meta`属性,如下所示:
```
const routes = [
{
path: '/',
component: Home,
meta: { keepAlive: true }
},
{
path: '/about',
component: About,
meta: { keepAlive: true }
},
// ...
]
```
3. 在组件内部使用`activated`生命周期钩子来保存滚动条位置,如下所示:
```
export default {
activated() {
// 保存滚动条位置
this.$nextTick(() => {
window.scrollTo(0, this.$route.meta.scrollTop || 0)
})
},
deactivated() {
// 记录滚动条位置
this.$route.meta.scrollTop = window.scrollY
},
// ...
}
```
通过上述步骤,在使用`router-link`或`$router.push`等方式跳转页面时,滚动条位置将会被自动保存和恢复。