UNPKG

@z-cloud/virtual-react

Version:

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

28 lines (27 loc) 1.11 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const react = require("react"); const reactDom = require("react-dom"); const virtualBrowser = require("@z-cloud/virtual-browser"); const virtualVanilla = require("@z-cloud/virtual-vanilla"); const useIsomorphicLayoutEffect = virtualVanilla.canUseDom ? react.useLayoutEffect : react.useEffect; function useVirualizer({ onReady, onChange, followPageScroll, ...props }, containerRef) { const rerender = react.useReducer(() => ({}), {})[1]; const options = { scrollMargin: followPageScroll ? virtualBrowser.getElementOffsetTop(containerRef.current) : 0, ...props, onChange: (scrolling) => { if (scrolling) { reactDom.flushSync(rerender); } else { rerender(); } onChange == null ? void 0 : onChange(scrolling); } }; const [virtualizer] = react.useState(() => new virtualBrowser.BrowserVirtualizer(options)); virtualizer.setOptions(options); return virtualizer; } exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect; exports.useVirualizer = useVirualizer;