UNPKG

react-image-viewers

Version:

a native js imageViewerUtil and react image viewer

206 lines (163 loc) 4.53 kB
# react-image-viewers 一款 React 图片组件,基于 ImageViewerUtil 实现,包含:图片预览、放大、缩小、旋转、拖动功能 ## 使用方式 ```bash yarn add react-image-viewers ``` ```bash import ReactImageViewer from 'react-image-viewers' import 'react-image-viewers/lib/esm/index.css' const reactImageViewerRef = useRef(null) const [loading, setLoading] = useState(false) <ReactImageViewer ref={reactImageViewerRef} url={imageUrl} timeout={5000} onLoadStart={(url) => { console.log(`ReactImageViewer Image LoadStart:: url=${url}`) setLoading(true) }} onLoad={(image) => { const { width, height } = image console.log(`ReactImageViewer Image Load:: width=${width},height=${height}`) setLoading(false) }} onLoadError={(err) => { console.error(`ReactImageViewer Image LoadError:: error=${JSON.stringify(err)}`) setLoading(false) }} onStyleChange={(opts) => { console.log(`ReactImageViewer Image StyleChange:: options=${JSON.stringify(opts)}`) }} /> ``` ## API ### 1、属性 - [url]: image url - [onLoadStart]:image loading - [onLoad]: image load - [onLoadError]: image load error - [onStyleChange]:image some attr change - [timeout]:delay show image - [config]: perScale?: number // 每次缩放比例 minScale?: number // 最小缩放比例 maxScale?: number // 最大缩放比例 perRotate?: number // 每次旋转角度 minRotate?: number // 最小旋转角度 maxRotate?: number // 最大旋转角度 translateTouchType?: 'mousewheel' | 'shift' | 'alt' | 'shift+mousewheel' | 'ctrl+shift+mousewheel' | 'ctrl+alt+mousewheel' // 滚轮缩放触发类型 ### 2、ref ```bash <button onClick={() => { reactImageViewerRef.current.setLarge() }} > 放大 </button> <button onClick={() => { reactImageViewerRef.current.setSmall() }} > 缩小 </button> <button onClick={() => { reactImageViewerRef.current.setReset() }} > 还原 </button> <button onClick={() => { reactImageViewerRef.current.setRotate() }} > 旋转 </button> ``` # ImageViewerUtil 此类使用原生 js 实现,不依赖任何第三方库 包含:图片预览、放大、缩小、旋转、拖动功能 ## 使用方式 ### 1、html 中使用 ```bash # 引入dist/ImageViewerUtil.js,详见:examples/purehtml/index.html <script src="ImageViewerUtil.js"></script> ``` ### 2、import 方式 ```bash import { ImageViewerUtil } from 'react-image-viewers' ``` ## API ### 1、初始化 ```bash const imageContainer = '<img /> 外层dom元素' const image = '<img /> dom元素' const config = { imageContainerNode: imageContainer, imageNode: image, onLoadStart: () => { // 图片加载中,loading }, onLoad: () => { // 图片加载完成,loading 取消 }, onLoadError: () => { // 图片加载出错 }, onStyleChange: () => { // 图片放大、缩小、旋转、拖动回调 }, } const imageViewerUtil = new ImageViewerUti(config) ``` ### 2、加载图片 切换上一张、下一张图片均自己控制 ```bash const imageUrl = '图片地址' imageViewerUtil.update({ url: imageUrl }) ``` ### 3、图片放大 ```bash imageViewerUtil.setLarge() ``` ### 4、图片缩小 ```bash imageViewerUtil.setSmall() ``` ### 5、图片还原 ```bash imageViewerUtil.setReset() ``` ### 6、图片旋转 ```bash imageViewerUtil.setRotate() ``` ### 7、销毁实例 ```bash imageViewerUtil.destory() ``` ### 7、debug 模式 ```bash imageViewerUtil.setDebug(true) ``` ### 7、图片延迟加载 ```bash const timeout = 3000 // 3s后显示图片 imageViewerUtil.setTimeout(timeout) ``` ### 8、更新 config ```bash imageViewerUtil.setConfig({ # perScale: 3, // 每次缩放比例 # minScale: 2, // 最小缩放比例 # maxScale: 7, // 最大缩放比例 # perRotate: 10, // 每次旋转角度 # minRotate: 0, // 最小旋转角度 # maxRotate: 180, // 最大旋转角度 # translateTouchType: 'shift+mousewheel', // 'mousewheel' | 'shift+mousewheel' | 'alt+mousewheel' | 'ctrl+shift+mousewheel' | 'ctrl+alt+mousewheel' // 滚轮缩放触发类型,默认mousewheel }) ```