UNPKG

@z-cloud/virtual-taro

Version:

一个基于React + TS开发的虚拟列表,支持瀑布流、grid的组件。

32 lines (31 loc) 789 B
import { useReducer, useState, useLayoutEffect } from "react"; import { flushSync } from "react-dom"; import { MiniVirtualizer } from "@z-cloud/virtual-mini"; const useIsomorphicLayoutEffect = useLayoutEffect; function useVirualizer({ onReady, onChange, scrollMargin, ...props }) { const rerender = useReducer(() => ({}), {})[1]; const options = { scrollMargin: scrollMargin ?? 0, ...props, onChange: (scrolling) => { if (scrolling) { flushSync(rerender); } else { rerender(); } onChange == null ? void 0 : onChange(scrolling); } }; const [virtualizer] = useState(() => new MiniVirtualizer(options)); virtualizer.setOptions(options); return virtualizer; } export { useIsomorphicLayoutEffect, useVirualizer };