@@ -20,13 +20,12 @@ export interface ImageViewerProps extends ViewProps {
2020 height ?: number ;
2121 /** 图像源(远程URL或本地文件资源 */
2222 src ?: string | ImageViewerDataSourceProps [ ] ;
23- /** 默认显示第几张图片 */
24- defaultIndex ?: number ;
2523}
2624
2725function ImageViewer ( props : ImageViewerProps ) {
28- const { width = 150 , height = 150 , src = defaultImage , defaultIndex = 0 , ...others } = props ;
26+ const { width = 150 , height = 150 , src = defaultImage , ...others } = props ;
2927 const [ visible , setVisible ] = useState ( false ) ;
28+ const [ index , setIndex ] = useState < number > ( 0 ) ;
3029 const fadeAnim = useRef ( new Animated . Value ( 0 ) ) . current ;
3130
3231 useMemo ( ( ) => {
@@ -43,11 +42,16 @@ function ImageViewer(props: ImageViewerProps) {
4342
4443 const imgUrl = useMemo ( ( ) => {
4544 if ( Array . isArray ( src ) ) {
46- return src [ defaultIndex ] . url ;
45+ return src [ 0 ] . url ;
4746 }
4847 return src ;
4948 } , [ src ] ) ;
5049
50+ const onImgClick = ( index : number ) => {
51+ setIndex ( index ) ;
52+ setVisible ( true ) ;
53+ } ;
54+
5155 return (
5256 < View style = { { } } >
5357 < View style = { { flexDirection : 'row' , justifyContent : 'space-between' } } >
@@ -57,7 +61,7 @@ function ImageViewer(props: ImageViewerProps) {
5761 < TransitionImage
5862 key = { index }
5963 style = { { width : width , height : height , flex : 1 } }
60- onPress = { ( ) => setVisible ( true ) }
64+ onPress = { ( ) => onImgClick ( index ) }
6165 source = { { uri : item . url } }
6266 PlaceholderContent = { < ActivityIndicator /> }
6367 transition = { true }
@@ -79,7 +83,7 @@ function ImageViewer(props: ImageViewerProps) {
7983 < MaskLayer visible = { visible } onDismiss = { ( ) => setVisible ( false ) } opacity = { 0.9 } >
8084 < Animated . View style = { [ styles . content , { opacity : fadeAnim } ] } >
8185 { Array . isArray ( src ) ? (
82- < Swiper dataSource = { src } height = { 200 } autoplay = { false } />
86+ < Swiper dataSource = { src } height = { 200 } autoplay = { false } index = { index } />
8387 ) : (
8488 < Image style = { { width : '100%' , height : '100%' , resizeMode : 'contain' } } source = { { uri : src } } />
8589 ) }
0 commit comments