美文网首页
react中用react-photo-view实现点击图片,图片

react中用react-photo-view实现点击图片,图片

作者: friendshi洛初Udo邭 | 来源:发表于2021-06-16 16:08 被阅读0次

    yarn add react-photo-view
    ("react-photo-view": "^0.5.2")

    import React from 'react';
    //引入插件及样式
    import { PhotoProvider, PhotoConsumer } from 'react-photo-view';
    import 'react-photo-view/dist/index.css';

    const _imgList = ['https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3514714634,3509521938&fm=26&gp=0.jpg', 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3514714634,3509521938&fm=26&gp=0.jpg'];

    export default () => {
    return (
    <div>
    {/* <PhotoProvider>
    <PhotoConsumer src={_imgList}>
    <img src={_imgList} alt="img" width="100%" height="100%" />
    </PhotoConsumer>
    </PhotoProvider> */}
    <PhotoProvider>
    {
    _imgList.map((list, v) => {
    return (
    <div key={list || v}>
    <PhotoConsumer src={list}>
    <img src={list} alt="" width="100%" height="100%" />
    </PhotoConsumer>
    </div>
    )
    })
    }
    </PhotoProvider>
    </div>
    );
    };

    react-photo-view

    一款精致的 React 的图片预览组件

    [图片上传失败...(image-9c63f9-1623831687116)]
    [图片上传失败...(image-9fbcc3-1623831687116)]
    [图片上传失败...(image-e5f707-1623831687116)]

    Demo: https://minjieliu.github.io/react-photo-view

    特性

    1. 支持左右切换导航、上/下滑关闭、双击放大/缩小、双指放大/缩小/平移、键盘导航/关闭、旋转、点击切换控件等
    2. 打开/关闭缩放动画
    3. 自适应图像适应
    4. 长图模式
    5. 支持桌面端(兼容 IE10+)/移动端
    6. 轻量的体积
    7. 高度的扩展性
    8. 支持服务端渲染
    9. 基于 typescript

    开始使用

    yarn add react-photo-view
    

    基本:

    import { PhotoProvider, PhotoConsumer } from 'react-photo-view';
    import 'react-photo-view/dist/index.css';
    
    function ImageView() {
      return (
        <PhotoProvider>
          {photoImages.map((item, index) => (
            <PhotoConsumer key={index} src={item} intro={item}>
              <img src={item} alt="" />
            </PhotoConsumer>
          ))}
        </PhotoProvider>
      );
    }
    

    受控 PhotoSlider

    function ImageView() {
      const [visible, setVisible] = React.useState(false);
      const [photoIndex, setPhotoIndex] = React.useState(0);
    
      return (
        <div>
          <Button onClick={() => setVisible(true)}>打开</Button>
          <PhotoSlider
            images={photoImages.map(item => ({ src: item }))}
            visible={visible}
            onClose={() => setVisible(false)}
            index={photoIndex}
            onIndexChange={setPhotoIndex}
          />
        </div>
      );
    }
    

    API

    PhotoProvider

    名称 类型 必选 描述
    children React.ReactNode
    maskClosable boolean 背景可点击关闭,默认 true
    photoClosable boolean 图片点击可关闭,默认 false
    bannerVisible boolean 导航条 visible,默认 true
    introVisible boolean 简介 visible,默认 true
    overlayRender (overlayProps) => React.ReactNode 自定义渲染
    toolbarRender (overlayProps) => React.ReactNode 工具栏渲染
    className string className
    maskClassName string 遮罩 className
    viewClassName string 图片容器 className
    imageClassName string 图片 className
    loadingElement JSX.Element 自定义 loading
    brokenElement JSX.Element | ((photoProps: brokenElementDataType) => JSX.Element) 加载失败 Element

    PhotoConsumer

    名称 类型 必选 描述
    src string 图片地址
    intro React.ReactNode 图片介绍
    children React.ReactElement

    注意:若 PhotoConsumerchildren 为自定义组件

    1. 需要向外部参数暴露 React.HTMLAttributes
    2. 展开/关闭动画精准位置则需要用 React.forwardRef 暴露内部 React.ReactHTMLElement 节点的 Ref

    PhotoSlider

    继承自 PhotoProvider。手动控制 react-photo-view 的展现与隐藏

    名称 类型 必选 描述
    images dataType[] 图片列表
    index number 图片当前索引
    visible boolean 可见
    onClose (evt) => void 关闭事件
    onIndexChange Function 索引改变回调

    谁在使用

    <a href="http://www.saastrip.com/"><img src="https://minjieliu.github.io/assets/md-image/saastrip_logo.png" align="left" height="48" width="48" /></a>
    <a href="http://www.zhinanmao.com/"><img src="https://minjieliu.github.io/assets/md-image/zhinanmao_logo.png" align="left" height="48" width="48" /></a>

    相关文章

      网友评论

          本文标题:react中用react-photo-view实现点击图片,图片

          本文链接:https://www.haomeiwen.com/subject/hgqfyltx.html