UNPKG

@tarojsx/library

Version:
33 lines 1.17 kB
import { useMemo, useEffect } from 'react'; import { eventCenter } from '@tarojs/taro'; import { uuid } from '../utils'; const trigger = (eventName) => (...args) => eventCenter.trigger(eventName, ...args); const eventKeys = [ 'onScrollToUpper', 'onScrollToLower', 'onRefresherPulling', 'onRefresherRefresh', 'onRefresherRestore', 'onRefresherAbort', ]; /** * Wrap ScrollView props to static object. * * WHY? `react-window outerElementType is a "tag". If you update this "tag". ScrollView will recreate and lose scroll position. */ export function useOuterScrollViewProps(props) { /** memo id for each component */ const id = useMemo(uuid, []); const result = Object.assign({}, props); for (const eventKey of eventKeys) { const eventName = `atReactWindow:${id}:${eventKey}`; const eventHandler = props[eventKey] || (() => { }); useEffect(() => { eventCenter.on(eventName, eventHandler); return () => eventCenter.off(eventName); }, [eventHandler]); result[eventKey] = trigger(eventName); } return result; } //# sourceMappingURL=useOuterScrollViewProps.js.map