react + antDesign封装图片预览组件(支持多张图片)

server/2024/9/24 4:55:49/

需求场景:最近在开发后台系统时经常遇到图片预览问题,如果一个一个的引用antDesign的图片预览组件就有点繁琐了,于是在antDesign图片预览组件的基础上二次封装了一下,避免重复无用代码的出现

效果

公共预览组件代码

import React, { useImperativeHandle, forwardRef, useState } from 'react';
import { message, Image } from 'antd';const ChildComponent = forwardRef((props, ref) => {
const [visible, setVisible] = useState(false);
const [imgList, setImgList] = useState([]);const showModal = async (list) => {setImgList(list);if (list.length === 0) {message.warning('暂无图片');} else {setVisible(true);}
};useImperativeHandle(ref, () => ({showModal
}));return (<div><div style={{ display: 'none' }}><Image.PreviewGroup preview={{ visible, onVisibleChange: (vis) => setVisible(vis) }}>{imgList.map((item) => {return <Image src={item.url} />;})}</Image.PreviewGroup></div></div>);
});export default ChildComponent;

使用方法

  1. 在项目components文件夹下新建preview文件夹
  2. preview文件夹下新建imgs.jsx把以上代码复制粘贴进去
  3. 在需要用到的地方引入
    import React, { useRef,useState } from 'react';
    import { Button } from 'antd';
    import Imgs from '../../.././components/Preview/imgs';export default () => {
    const imgsRef = useRef();
    const [imgList, setImgList] = useState([{name:'图片1',url:'https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp'},{name:'图片2',url:'https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp'},{name:'图片3',url:'https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp'}
    ]);//预览图片
    const imgsPreview = (text) => {imgsRef.current.showModal(imgList);
    };return (<div><Button onClick={()=>{imgsPreview()}}></Button><Imgs ref={imgsRef} /></div>);
    };

注:本人前端小白 ,如有不对的地方还请多多指教


http://www.ppmy.cn/server/121172.html

相关文章

2024从传统到智能,AI做PPT软件的崛起之路

随着AI技术的飞速进步&#xff0c;它已悄然渗透至我们的工作与学习之中&#xff0c;不仅助力写作与绘画创作&#xff0c;就连PPT制作这一传统办公领域也迎来了AI的革新。我最近有幸探索了一系列AI驱动的PPT制作工具&#xff0c;亲身体验后深感震撼——合理利用这些ai做ppt工具&…

Tcping:一款实用的端口存活检测工具

简介 tcping 是一个基于TCP协议的网络诊断工具,通过发送 TCP SYN/ACK包来检测目标主机的端口状态。 官网:tcping.exe - ping over a tcp connection 优点: (1)监听服务器端口状态:tcping 可以检测指定端口的状态,默认是80端口,也可以指定其他端口。 (2)显示ping返…

MySQL深度探索:掌握触发器自动化与精细用户权限管理,提升数据库效能与安全

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#x…

uniapp打字效果流式输出

在UniApp中实现打字效果的流式输出&#xff0c;可以按照以下思路进行&#xff1a; 1. 定义数据结构&#xff1a; 创建一个data对象&#xff0c;包含完整文本、当前显示文本和字符索引。 2. 使用生命周期钩子&#xff1a; 在mounted钩子中启动打字效果的逻辑。 3. 编写打字…

正向代理和反向代理

什么是正向代理&#xff1f; **正向代理&#xff08;Forward Proxy&#xff09;**是一种代理服务器&#xff0c;位于客户端和互联网之间。客户端通过正向代理服务器访问目标服务器&#xff0c;代理服务器代表客户端向目标服务器发出请求&#xff0c;并将响应返回给客户端。正向…

如何检测出来这个ip是共享ip不安全

检测一个IP是否为共享IP以及其安全性可以通过以下几种方法和工具来进行分析。共享IP通常是指多个用户共享一个IP地址&#xff0c;常见于公共代理服务器、VPN服务或数据中心IP。如果你想评估一个IP是否为共享IP以及其安全性&#xff0c;以下方法和工具可以帮助你进行检测和分析。…

智能PPT行业赋能用户画像

智能PPT市场在巨大的需求前景下&#xff0c;已吸引一批不同类型的玩家投入参与竞争。从参与玩家类型来看&#xff0c;不乏各类与PPT创作有关的上下游企业逐步向智能PPT赛道转型进入&#xff0c;也包括顺应生成式AI技术热潮所推出的创业企业玩家。当前&#xff0c;智能PPT赛道发…

【网络安全】依赖混淆漏洞实现RCE

未经许可&#xff0c;不得转载。 文章目录 正文 依赖混淆是一种供应链攻击漏洞&#xff0c;发生在企业的内部依赖包错误地从公共库&#xff08;如npm&#xff09;下载&#xff0c;而不是从其私有注册表下载。攻击者可以在公共注册表中上传一个与公司内部包同名的恶意包&#xf…