From b3f3275b6f04f714b1dcdfbde85cb7e520b04581 Mon Sep 17 00:00:00 2001 From: kongjing Date: Fri, 9 Jun 2023 11:33:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20pull-to-refresh=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E6=97=B6=E9=97=B4=E5=8F=82=E6=95=B0=EF=BC=88?= =?UTF-8?q?#509=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vantui/src/pull-to-refresh/pull-to-refresh.tsx | 10 ++++++---- packages/vantui/types/pull-to-refresh.d.ts | 10 ++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/vantui/src/pull-to-refresh/pull-to-refresh.tsx b/packages/vantui/src/pull-to-refresh/pull-to-refresh.tsx index 1b8a890a..7c5dffbf 100644 --- a/packages/vantui/src/pull-to-refresh/pull-to-refresh.tsx +++ b/packages/vantui/src/pull-to-refresh/pull-to-refresh.tsx @@ -22,6 +22,8 @@ export default function PullToRefresh(props: IPullToRefreshProps) { onRefresh, touchMaxStart = 300, disable = false, + successDuration = SUCESS_DURATION, + touchMinTime = TOUCH_MIN_TIME, } = props const [statusHeight, setStatusHeight] = useState(0) const [status, setStatus] = useState('pull') // 待拖拽 @@ -72,7 +74,7 @@ export default function PullToRefresh(props: IPullToRefreshProps) { function (event) { if ( !disable && - Date.now() - touch.time > TOUCH_MIN_TIME && + Date.now() - touch.time > touchMinTime && (status === 'pull' || status === 'release') ) { event.preventDefault() @@ -83,7 +85,7 @@ export default function PullToRefresh(props: IPullToRefreshProps) { setStatusHeight(y) } }, - [disable, status, touch.start, touch.time], + [disable, status, touch.start, touch.time, touchMinTime], ) const onTouchEnd = useCallback(async () => { @@ -94,11 +96,11 @@ export default function PullToRefresh(props: IPullToRefreshProps) { setStatus('success') setTimeout(() => { reset() - }, SUCESS_DURATION) + }, successDuration) } else { reset() } - }, [headHeight, onRefresh, rendermarginTop, reset, status]) + }, [headHeight, onRefresh, rendermarginTop, reset, status, successDuration]) useEffect(() => { setTimeout(() => { diff --git a/packages/vantui/types/pull-to-refresh.d.ts b/packages/vantui/types/pull-to-refresh.d.ts index eb61c8c8..e791e898 100644 --- a/packages/vantui/types/pull-to-refresh.d.ts +++ b/packages/vantui/types/pull-to-refresh.d.ts @@ -46,6 +46,16 @@ export interface IPullToRefreshProps extends ViewProps { * @default `false` */ disable?: boolean + /** + * @description 成功状态展示时长 + * @default `1000` + */ + successDuration?: number + /** + * @description 触摸触发拖拽的最小停留时间 + * @default `400` + */ + touchMinTime?: number } declare const PullToRefresh: FunctionComponent