From b38de89a4fd2d2d95569f965632b6dc77f5f59af Mon Sep 17 00:00:00 2001 From: fangzhizheng1 Date: Sun, 23 Feb 2025 18:42:36 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=97=A0=E9=99=90=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4=E6=BB=9A=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/infiniteloading/infiniteloading.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/packages/infiniteloading/infiniteloading.tsx b/src/packages/infiniteloading/infiniteloading.tsx index 80186213e4..845ccddb54 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, @@ -77,6 +79,16 @@ export const InfiniteLoading: FunctionComponent< const classes = classNames(classPrefix, className, `${classPrefix}-${type}`) + useEffect(() => { + if (defaultScrollTop) { + const childHeight = (getRefreshTop().firstElementChild as HTMLElement).offsetHeight || 0; + refreshMaxH.current = Math.floor(childHeight * 1 + 10); + setTimeout(() =>{ + scrollEl.current.scrollTop = defaultScrollTop + }, 10) + } + }, [defaultScrollTop]); + useEffect(() => { if (target && document.getElementById(target)) { scrollEl.current = document.getElementById(target) From 090a9fec98473f2be5a4dded3959bcfa607718cf Mon Sep 17 00:00:00 2001 From: fangzhizheng1 Date: Sun, 23 Feb 2025 18:49:42 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E6=96=87=E6=A1=A3=E8=A1=A5?= =?UTF-8?q?=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/infiniteloading/doc.md | 1 + 1 file changed, 1 insertion(+) 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` | `-` | ## 主题定制 From 9491fb20375b6f640a41912fdd49a84aea684c90 Mon Sep 17 00:00:00 2001 From: fzz <919852884@qq.com> Date: Thu, 13 Mar 2025 20:23:32 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20lint=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infiniteloading/infiniteloading.tsx | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/packages/infiniteloading/infiniteloading.tsx b/src/packages/infiniteloading/infiniteloading.tsx index 845ccddb54..d609e08ee6 100644 --- a/src/packages/infiniteloading/infiniteloading.tsx +++ b/src/packages/infiniteloading/infiniteloading.tsx @@ -79,16 +79,6 @@ export const InfiniteLoading: FunctionComponent< const classes = classNames(classPrefix, className, `${classPrefix}-${type}`) - useEffect(() => { - if (defaultScrollTop) { - const childHeight = (getRefreshTop().firstElementChild as HTMLElement).offsetHeight || 0; - refreshMaxH.current = Math.floor(childHeight * 1 + 10); - setTimeout(() =>{ - scrollEl.current.scrollTop = defaultScrollTop - }, 10) - } - }, [defaultScrollTop]); - useEffect(() => { if (target && document.getElementById(target)) { scrollEl.current = document.getElementById(target) @@ -113,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`,