interface ScrollEventDetail { scrollLeft: number, scrollTop: number } interface ScrollEvent extends Event { detail: ScrollEventDetail } type EventHandler = (e: T) => void; type ScrollViewDetailTuple = [ScrollEventDetail, EventHandler]; /** * * scrollView scroll 滚动处理 */ export const useScrollViewScroll = (callback?: EventHandler): ScrollViewDetailTuple => { const scrollDetail = reactive({ scrollLeft: 0, scrollTop: 0 }); const handleScroll = (e: ScrollEvent) => { const { scrollLeft, scrollTop } = e.detail; scrollDetail.scrollLeft = scrollLeft; scrollDetail.scrollTop = scrollTop; callback && callback(e.detail); } return [ scrollDetail, handleScroll ]; }