vue3 路由页面返回时,恢复滚动条位置

首先,路由必须是KeepAlive模式

<script setup lang="ts">
import { onActivated } from "vue";
import { onBeforeRouteLeave } from "vue-router";


import { ref } from "vue"

const scrollRef = ref(<HTMLElement><unknown>null)
const scrollTop = ref(0)

onActivated(()=>{
    console.log("恢复滚动:" , scrollTop.value);
    scrollRef.value.scrollTop = scrollTop.value;
})
onBeforeRouteLeave((to, from, next)=>{
  scrollTop.value = scrollRef.value.scrollTop;
  next();
})

</script>

<template>
    	<div class="medalContainer" ref="scrollRef">
            <div class="row" v-for="index in 20">
                <img src="@/assets/medal.svg" />
                <img src="@/assets/medal.svg" />
                <img src="@/assets/medal.svg" />
                <img src="@/assets/medal.svg" />
                <img src="@/assets/medal.svg" />
            </div>
        </div>
</template>

<style scoped>
.medalContainer {
    overflow-x: hidden;
    overflow-y: auto;
}
</style>
posted @   IWing  阅读(1085)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
历史上的今天:
2021-05-08 electron打包,使用electron-packager
2019-05-08 vs2019装了WDK后,编译其他vc工程,提示无法打开文件"msvcprtd.lib"
2017-05-08 centos7 安装 PostgreSql
点击右上角即可分享
微信分享提示