目录
- react-native-image-viewer大图预览
- 先看一个实现的效果
- 实例
- 下面是一个简单的实例代码
- Props
react-native-image-viewer大图预览
在移动开发中,特别是涉及到图片的应用开发中,经常会遇到图片预览等功能,并且预览支持图片的放大和缩小,在Android原生开发中可以使用PhotoViewPager库实现,如果在React Native中,可以选择使用react-native-image-viewer。
先看一个实现的效果

实例
使用前需要先安装react-native-image-viewer库,安装命令如下:
npm i react-native-image-zoom-viewer --save
然后引入ImageViewer组件,然后设置图片的数据源即可,imageUrls接受一个图片数组。
下面是一个简单的实例代码
import React, {PureComponent, Component} from 'react'
import {View, Modal,Navigator} from 'react-native';
import ImageViewer from 'react-native-image-zoom-viewer';
const images = [{
url: "https://avatars2.gitdubusercontent.com/u/7970947?v=3&s=460",
// url:
// "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1527660246058&di=6f0f1b19cf05a64317cbc5d2b3713d64&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F0112a85874bd24a801219c7729e77d.jpg",
// props: {
// // headers: ...
// // source: require('./img.png')
// },
// freeHeight: true
},
{url: "https://avatars2.gitdubusercontent.com/u/7970947?v=3&s=460"}
];
export default class ImageZoom extends PureComponent {
state = {
index: 0,
modalVisible: true
};
render() {
return (
<View
style={{
padding: 10
}}
>
<Modal
visible={tdis.state.modalVisible}
transparent={true}
onRequestClose={() => tdis.setState({modalVisible: false})}>
<ImageViewer imageUrls={images} index={tdis.state.index}/>
</Modal>
</View>
)
}
}
Props
react-native-image-viewer库提供了诸多的属性,常见的属性如下。
| 属性名 | type | 描述 | 默认值 |
| imageUrls(必填) | array | 图片数据源 | |
| enableImageZoom | boolean | 是否可以进行缩放操作 | true |
| onShowModal | (content?: JSX.Element) => void | 弹出大图回调 | () => {} |
| onCancel | () => void | 取消图片回调 | () => {} |
| fliptdreshold | number | 滑动到下一页的X值 | 80 |
| maxOverflow | number | 滑动到下一页的X位置最大值 | 300 |
| index | number | 初始显示第几张图片 | 0 |
| failImageSource | {uri: string} | 加载失败显示图片 | ” |
| loadingRender | () => React.ReactElement | 渲染loading | () => null |
| onSaveToCamera | (index?: number => void | 保存到相机的回调 | () => {} |
| onChange | (index?: number => void | 图片切换时触发 | () => {} |
| saveToLocalByLongPress | boolean | 是否开启长按保存图片到本地 | true |
| onClick | (onCancel?: function) => void | 单击事件 | (onCancel) => {onCancel()} |
| onDoubleClick | (onCancel?: function) => void | 双击事件 | (onCancel) => {onCancel()} |
| onSave | (url: string) => void | 保存图片到本地, | (onCancel) => {onCancel()} |
| renderFooter | () => React.ReactElement | 自定义头部 | () => null |
| renderFooter | () => React.ReactElement | 自定义尾部视图 | () => null |
| renderIndicator | (currentIndex?: number, allSize?) => React.ReactElement: number | 自定义计时器 | (currentIndex, allSize) => currentIndex + “/” + allSize |
| renderImage | (props: any) => React.ReactElement | 自定义Image组件 | (props) => |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)