使用react-native-image-viewer實現(xiàn)大圖預(yù)覽
react-native-image-viewer大圖預(yù)覽
在移動開發(fā)中,特別是涉及到圖片的應(yīng)用開發(fā)中,經(jīng)常會遇到圖片預(yù)覽等功能,并且預(yù)覽支持圖片的放大和縮小,在Android原生開發(fā)中可以使用PhotoViewPager庫實現(xiàn),如果在React Native中,可以選擇使用react-native-image-viewer。
先看一個實現(xiàn)的效果

實例
使用前需要先安裝react-native-image-viewer庫,安裝命令如下:
npm i react-native-image-zoom-viewer --save
然后引入ImageViewer組件,然后設(shè)置圖片的數(shù)據(jù)源即可,imageUrls接受一個圖片數(shù)組。
下面是一個簡單的實例代碼
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 | 描述 | 默認(rèn)值 |
| imageUrls(必填) | array | 圖片數(shù)據(jù)源 | |
| enableImageZoom | boolean | 是否可以進(jìn)行縮放操作 | true |
| onShowModal | (content?: JSX.Element) => void | 彈出大圖回調(diào) | () => {} |
| onCancel | () => void | 取消圖片回調(diào) | () => {} |
| fliptdreshold | number | 滑動到下一頁的X值 | 80 |
| maxOverflow | number | 滑動到下一頁的X位置最大值 | 300 |
| index | number | 初始顯示第幾張圖片 | 0 |
| failImageSource | {uri: string} | 加載失敗顯示圖片 | ” |
| loadingRender | () => React.ReactElement | 渲染loading | () => null |
| onSaveToCamera | (index?: number => void | 保存到相機的回調(diào) | () => {} |
| onChange | (index?: number => void | 圖片切換時觸發(fā) | () => {} |
| 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) => |
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
React利用scheduler思想實現(xiàn)任務(wù)的打斷與恢復(fù)
這篇文章主要為大家詳細(xì)介紹了React如何利用scheduler思想實現(xiàn)任務(wù)的打斷與恢復(fù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2024-03-03
React前端渲染優(yōu)化--父組件導(dǎo)致子組件重復(fù)渲染的問題
本篇文章是針對父組件導(dǎo)致子組件重復(fù)渲染的優(yōu)化方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
淺析JS中什么是自定義react數(shù)據(jù)驗證組件
我們在做前端表單提交時,經(jīng)常會遇到要對表單中的數(shù)據(jù)進(jìn)行校驗的問題。這篇文章主要介紹了js中什么是自定義react數(shù)據(jù)驗證組件,需要的朋友可以參考下2018-10-10
使用VScode 插件debugger for chrome 調(diào)試react源碼的方法
這篇文章主要介紹了使用VScode 插件debugger for chrome 調(diào)試react源碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
React+valtio響應(yīng)式狀態(tài)管理
Valtio是一個很輕量級的響應(yīng)式狀態(tài)管理庫,使用外部狀態(tài)代理去驅(qū)動React視圖來更新,本文主要介紹了React+valtio響應(yīng)式狀態(tài)管理,感興趣的可以了解一下2023-12-12
詳解react使用react-bootstrap當(dāng)輪子造車
本篇文章主要介紹了詳解react使用react-bootstrap當(dāng)輪子造車,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-08-08

