MCPcopy Index your code
hub / github.com/TanStack/virtual / useVirtualizerBase

Function useVirtualizerBase

packages/react-virtual/src/index.tsx:19–54  ·  view source on GitHub ↗
(
  options: VirtualizerOptions<TScrollElement, TItemElement>,
)

Source from the content-addressed store, hash-verified

17 typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect
18
19function useVirtualizerBase<
20 TScrollElement extends Element | Window,
21 TItemElement extends Element,
22>(
23 options: VirtualizerOptions<TScrollElement, TItemElement>,
24): Virtualizer<TScrollElement, TItemElement> {
25 const rerender = React.useReducer(() => ({}), {})[1]
26
27 const resolvedOptions: VirtualizerOptions<TScrollElement, TItemElement> = {
28 ...options,
29 onChange: (instance, sync) => {
30 if (sync) {
31 flushSync(rerender)
32 } else {
33 rerender()
34 }
35 options.onChange?.(instance, sync)
36 },
37 }
38
39 const [instance] = React.useState(
40 () => new Virtualizer<TScrollElement, TItemElement>(resolvedOptions),
41 )
42
43 instance.setOptions(resolvedOptions)
44
45 useIsomorphicLayoutEffect(() => {
46 return instance._didMount()
47 }, [])
48
49 useIsomorphicLayoutEffect(() => {
50 return instance._willUpdate()
51 })
52
53 return instance
54}
55
56export function useVirtualizer<
57 TScrollElement extends Element,

Callers 2

useVirtualizerFunction · 0.70
useWindowVirtualizerFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected