From e2fbb2a8ad9b0cde1a3056dd40b37b41a2239798 Mon Sep 17 00:00:00 2001 From: Memory <134070804+Memory2314@users.noreply.github.com> Date: Wed, 18 Mar 2026 11:31:52 +0800 Subject: [PATCH] fix: reset proxy list scroll position to top on page entry --- src/renderer/src/pages/proxies.tsx | 34 ++---------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/src/renderer/src/pages/proxies.tsx b/src/renderer/src/pages/proxies.tsx index e93262e..a09d62a 100644 --- a/src/renderer/src/pages/proxies.tsx +++ b/src/renderer/src/pages/proxies.tsx @@ -23,7 +23,6 @@ import { useControledMihomoConfig } from '@renderer/hooks/use-controled-mihomo-c import { useTranslation } from 'react-i18next' const GROUP_EXPAND_STATE_KEY = 'proxy_group_expand_state' -const SCROLL_POSITION_KEY = 'proxy_scroll_position' // 自定义 hook 用于管理展开状态 const useProxyState = ( @@ -32,33 +31,9 @@ const useProxyState = ( virtuosoRef: React.RefObject isOpen: boolean[] setIsOpen: React.Dispatch> - initialTopMostItemIndex: number - handleRangeChanged: (range: { startIndex: number }) => void } => { const virtuosoRef = useRef(null) - // 记住滚动位置 - const [initialTopMostItemIndex] = useState(() => { - try { - const savedPosition = sessionStorage.getItem(SCROLL_POSITION_KEY) - if (savedPosition) { - sessionStorage.removeItem(SCROLL_POSITION_KEY) - return parseInt(savedPosition, 10) || 0 - } - } catch (error) { - console.error('Failed to restore scroll position:', error) - } - return 0 - }) - - const handleRangeChanged = useCallback((range: { startIndex: number }) => { - try { - sessionStorage.setItem(SCROLL_POSITION_KEY, range.startIndex.toString()) - } catch (error) { - console.error('Failed to save scroll position:', error) - } - }, []) - // 初始化展开状态 const [isOpen, setIsOpen] = useState(() => { try { @@ -101,9 +76,7 @@ const useProxyState = ( return { virtuosoRef, isOpen, - setIsOpen, - initialTopMostItemIndex, - handleRangeChanged + setIsOpen } } @@ -122,8 +95,7 @@ const Proxies: React.FC = () => { } = appConfig || {} const [cols, setCols] = useState(1) - const { virtuosoRef, isOpen, setIsOpen, initialTopMostItemIndex, handleRangeChanged } = - useProxyState(groups) + const { virtuosoRef, isOpen, setIsOpen } = useProxyState(groups) const [delaying, setDelaying] = useState(Array(groups.length).fill(false)) const [proxyDelaying, setProxyDelaying] = useState>(new Set()) const [searchValue, setSearchValue] = useState(Array(groups.length).fill('')) @@ -613,8 +585,6 @@ const Proxies: React.FC = () => { defaultItemHeight={80} increaseViewportBy={{ top: 150, bottom: 150 }} overscan={200} - initialTopMostItemIndex={initialTopMostItemIndex} - rangeChanged={handleRangeChanged} computeItemKey={(index, groupIndex) => `${groupIndex}-${index}`} groupContent={renderGroupContent} itemContent={renderItemContent}