11import { useEffect , useMemo , useRef } from 'react' ;
2- import { Animated , Platform } from 'react-native' ;
2+ import { Animated } from 'react-native' ;
33import PagerView , {
44 PagerViewOnPageScrollEventData ,
55 PagerViewOnPageSelectedEvent ,
@@ -11,7 +11,7 @@ import { useMemoizedFn, useSafeState } from '@td-design/rn-hooks';
1111export default function usePagerView ( initialPage : number , page ?: number , onChange ?: ( page : number ) => void ) {
1212 const pagerViewRef = useRef < PagerView > ( null ) ;
1313
14- const [ activePage , setActivePage ] = useSafeState ( page || initialPage ) ;
14+ const [ activePage , setActivePage ] = useSafeState ( initialPage ) ;
1515 const [ isIdle , setIdle ] = useSafeState ( true ) ;
1616
1717 const setPage = useMemoizedFn ( ( page : number , animated = true ) => {
@@ -24,15 +24,17 @@ export default function usePagerView(initialPage: number, page?: number, onChang
2424 setActivePage ( page ) ;
2525 if ( activePage !== page ) {
2626 setIdle ( false ) ;
27+ } else {
28+ setIdle ( true ) ;
2729 }
2830 onChange ?.( page ) ;
2931 } ) ;
3032
3133 useEffect ( ( ) => {
32- if ( ! isNaN ( Number ( page ) ) ) {
33- setPage ( Number ( page ) ) ;
34+ if ( page !== undefined && page !== activePage ) {
35+ setPage ( page ) ;
3436 }
35- } , [ page ] ) ;
37+ } , [ page , activePage ] ) ;
3638
3739 const offset = useRef ( new Animated . Value ( initialPage ) ) . current ;
3840 const position = useRef ( new Animated . Value ( 0 ) ) . current ;
@@ -63,9 +65,7 @@ export default function usePagerView(initialPage: number, page?: number, onChang
6365 const onPageSelected = useMemoizedFn ( ( e : PagerViewOnPageSelectedEvent ) => {
6466 setActivePage ( e . nativeEvent . position ) ;
6567 onChange ?.( e . nativeEvent . position ) ;
66- if ( Platform . OS === 'ios' ) {
67- setIdle ( true ) ;
68- }
68+ setIdle ( true ) ;
6969 } ) ;
7070
7171 const [ scrollState , setScrollState ] = useSafeState < 'idle' | 'dragging' | 'settling' > ( 'idle' ) ;
0 commit comments