From 2fce7b469b097537df151cfc5c353d9020f6f463 Mon Sep 17 00:00:00 2001 From: dopamine Date: Sat, 27 Jul 2024 22:21:35 +0800 Subject: [PATCH] fix(components): [scrollbar] restore scroll position in onActivated hook (#11363) --- packages/components/scrollbar/src/scrollbar.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/components/scrollbar/src/scrollbar.vue b/packages/components/scrollbar/src/scrollbar.vue index 1a9b261d71..18dbc2b500 100644 --- a/packages/components/scrollbar/src/scrollbar.vue +++ b/packages/components/scrollbar/src/scrollbar.vue @@ -28,6 +28,7 @@ import { computed, nextTick, + onActivated, onMounted, onUpdated, provide, @@ -57,6 +58,8 @@ const ns = useNamespace('scrollbar') let stopResizeObserver: (() => void) | undefined = undefined let stopResizeListener: (() => void) | undefined = undefined +let wrapScrollTop = 0 +let wrapScrollLeft = 0 const scrollbarRef = ref() const wrapRef = ref() @@ -85,6 +88,8 @@ const resizeKls = computed(() => { const handleScroll = () => { if (wrapRef.value) { barRef.value?.handleScroll(wrapRef.value) + wrapScrollTop = wrapRef.value.scrollTop + wrapScrollLeft = wrapRef.value.scrollLeft emit('scroll', { scrollTop: wrapRef.value.scrollTop, @@ -160,6 +165,11 @@ provide( }) ) +onActivated(() => { + wrapRef.value!.scrollTop = wrapScrollTop + wrapRef.value!.scrollLeft = wrapScrollLeft +}) + onMounted(() => { if (!props.native) nextTick(() => {