MCPcopy
hub / github.com/pmndrs/react-spring / useScroll

Function useScroll

packages/core/src/hooks/useScroll.ts:37–81  ·  view source on GitHub ↗
({
  container,
  ...springOptions
}: UseScrollOptions = {})

Source from the content-addressed store, hash-verified

35 * @returns {SpringValues<{scrollX: number; scrollY: number; scrollXProgress: number; scrollYProgress: number}>} SpringValues the collection of values returned from the inner hook
36 */
37export const useScroll = ({
38 container,
39 ...springOptions
40}: UseScrollOptions = {}): SpringValues<{
41 scrollX: number
42 scrollY: number
43 scrollXProgress: number
44 scrollYProgress: number
45}> => {
46 const [scrollValues, api] = useSpring(
47 () => ({
48 scrollX: 0,
49 scrollY: 0,
50 scrollXProgress: 0,
51 scrollYProgress: 0,
52 ...springOptions,
53 }),
54 []
55 )
56
57 useIsomorphicLayoutEffect(() => {
58 const cleanupScroll = onScroll(
59 ({ x, y }) => {
60 api.start({
61 scrollX: x.current,
62 scrollXProgress: x.progress,
63 scrollY: y.current,
64 scrollYProgress: y.progress,
65 })
66 },
67 { container: container?.current || undefined }
68 )
69
70 return () => {
71 /**
72 * Stop the springs on unmount.
73 */
74 each(Object.values(scrollValues), value => value.stop())
75
76 cleanupScroll()
77 }
78 }, [])
79
80 return scrollValues
81}

Callers 1

AppFunction · 0.50

Calls 5

useSpringFunction · 0.90
onScrollFunction · 0.90
eachFunction · 0.90
startMethod · 0.65
stopMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…