refactor: Optimize scroll position management to prevent unnecessary updates
This commit is contained in:
parent
c544657720
commit
9c70d60267
@ -80,10 +80,13 @@ export const UIStateProvider = ({ children }: { children: ReactNode }) => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const setScrollPosition = useCallback((key: string, position: number) => {
|
const setScrollPosition = useCallback((key: string, position: number) => {
|
||||||
setScrollPositions((prev) => ({
|
setScrollPositions((prev) => {
|
||||||
...prev,
|
if (prev[key] === position) return prev;
|
||||||
[key]: position,
|
return {
|
||||||
}));
|
...prev,
|
||||||
|
[key]: position,
|
||||||
|
};
|
||||||
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const value = useMemo(
|
const value = useMemo(
|
||||||
|
|||||||
@ -15,5 +15,6 @@ export const useScrollPersistence = (key: string) => {
|
|||||||
return () => {
|
return () => {
|
||||||
setScrollPosition(key, window.scrollY);
|
setScrollPosition(key, window.scrollY);
|
||||||
};
|
};
|
||||||
}, [key, setScrollPosition, scrollPositions]); // eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [key, setScrollPosition]);
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user