diff --git a/src/packages/infiniteloading/doc.md b/src/packages/infiniteloading/doc.md index 6238f92df2..19151251a9 100644 --- a/src/packages/infiniteloading/doc.md +++ b/src/packages/infiniteloading/doc.md @@ -68,6 +68,7 @@ import { InfiniteLoading } from '@nutui/nutui-react' | onRefresh | 下拉刷新事件回调 | `() => Promise` | `-` | | onLoadMore | 继续加载的回调函数 | `() => Promise` | `-` | | onScroll | 实时监听滚动高度 | `(param: number) => void` | `-` | +| defaultScrollTop | 默认滚动距离 | `number` | `-` | ## 主题定制 diff --git a/src/packages/infiniteloading/infiniteloading.tsx b/src/packages/infiniteloading/infiniteloading.tsx index 80186213e4..d609e08ee6 100644 --- a/src/packages/infiniteloading/infiniteloading.tsx +++ b/src/packages/infiniteloading/infiniteloading.tsx @@ -23,6 +23,7 @@ export interface InfiniteLoadingProps extends BasicComponent { onRefresh: () => Promise onLoadMore: () => Promise onScroll: (param: number) => void + defaultScrollTop?: number } declare let window: Window & { webkitRequestAnimationFrame: any } & { @@ -60,6 +61,7 @@ export const InfiniteLoading: FunctionComponent< onRefresh, onLoadMore, onScroll, + defaultScrollTop, ...restProps } = { ...defaultProps, @@ -101,6 +103,21 @@ export const InfiniteLoading: FunctionComponent< } }, []) + useEffect(() => { + if (defaultScrollTop) { + const childHeight = + (getRefreshTop().firstElementChild as HTMLElement).offsetHeight || 0 + refreshMaxH.current = Math.floor(childHeight * 1 + 10) + setTimeout(() => { + if ((scrollEl.current as any)?.scrollTop !== undefined) { + ;(scrollEl.current as any).scrollTop = defaultScrollTop + } else if ((scrollEl.current as any)?.scrollY !== undefined) { + ;(scrollEl.current as any).scrollY = defaultScrollTop + } + }, 10) + } + }, [defaultScrollTop]) + const getStyle = () => { return { height: distance.current < 0 ? `0px` : `${distance.current}px`,