index.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import React, { useCallback } from "react"
  2. import './index.less'
  3. import "react-responsive-carousel/lib/styles/carousel.min.css";
  4. import { Carousel } from 'react-responsive-carousel'
  5. import { CloseOutlined } from "@ant-design/icons";
  6. import { Button } from "antd";
  7. interface Props {
  8. data: string[],
  9. show: boolean,
  10. hidden: (value: boolean) => void
  11. }
  12. function ImgPreview (props: Props) {
  13. let {data, show = false, hidden} = props
  14. const handleHidden = useCallback((e) => {
  15. e.stopPropagation()
  16. e.preventDefault()
  17. hidden(false)
  18. },[])
  19. return <div id="imgPreview" style={{display: show && data.length > 0 ? 'block' : 'none'}}>
  20. <Button type="text" className="close" onClick={(e)=>{handleHidden(e)}}><CloseOutlined /></Button>
  21. <div className="back" onClick={(e)=>{handleHidden(e)}}></div>
  22. <Carousel>
  23. {
  24. data?.map((item: string, index: number) => <div key={index}>
  25. <img src={item} />
  26. </div>)
  27. }
  28. </Carousel>
  29. </div>
  30. }
  31. export default React.memo(ImgPreview)