【hooks子组件调用父组件方法】封装react-viewer图片查看器
2022/3/9 23:19:37
本文主要是介绍【hooks子组件调用父组件方法】封装react-viewer图片查看器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、ImgViewer/index.tsx
import React from 'react' import Viewer from 'react-viewer' interface ImgViewerProps { visible: boolean // 是否显示viewer images: Array<object> // 图片列表 [{src: '', alt: '',downloadUrl: ''}] activeIndex?: number // 下标,默认值为0,只有一张照片时可不传 handleClose: (value: any) => void // 触发父组件方法 downloadable?: boolean // 是否支持下载,默认:true } const ImgViewer: React.FC<ImgViewerProps> = (props: any) => { const { handleClose, visible, images, activeIndex = 0, downloadable = true } = props return ( <Viewer visible={visible} images={images} activeIndex={activeIndex} onClose={handleClose} onMaskClick={handleClose} // 点击遮罩关闭 downloadable={downloadable} // 是否显示下载按钮,默认显示,显示时imgs对象中需要有downloadUrl字段 downloadInNewWindow // 新窗口打开图片 /> ) } export default ImgViewer
2、使用
import ImgViewer from '@/components/ImgViewer'
// 传递给 ImgViewer 组件的三个值 const [visible, setVisible] = useState<boolean>(false) const [activeIndex, setActiveIndex] = useState<number>(0) const [images, setImages] = useState<any[]>([])
// 图片预览 const handleImgPreview = (list: Array<any>, index: number) => { const imgList: Array<object> = list.map(({ alt, src }) => ({ alt, src, downloadUrl: src })) setVisible(true) setActiveIndex(index) setImages(imgList) }
DOM:
<ImgViewer handleClose={setVisible.bind(this, false)} // 子组件中通过 handleClose 方法改变父组件中的state visible={visible} images={images} activeIndex={activeIndex} />
子调父的关键在于,将方法通过props传给子组件;
父调子的关键在于,子组件中通过useImperativeHandle钩子将方法暴露出去,父组件需要引入useRef去调用子组件暴露出来的方法。
对于数据流向,建议将数据放在父组件去处理,子组件只做展示用,不对数据进行操作
这篇关于【hooks子组件调用父组件方法】封装react-viewer图片查看器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04React 19 来了!新的编译器简直太棒了!
- 2025-01-032025年Node.js与PHP大比拼:挑选最适合的后端技术进行现代web开发
- 2025-01-03?? 用 Gemini API、Next.js 和 TailwindCSS 快速搭建 AI 推文生成项目 ??
- 2024-12-31Vue CLI多环境配置学习入门
- 2024-12-31Vue CLI学习入门:一步一步搭建你的第一个Vue项目
- 2024-12-31Vue3公共组件学习入门:从零开始搭建实用组件库
- 2024-12-31Vue3公共组件学习入门教程
- 2024-12-31Vue3学习入门:新手必读教程
- 2024-12-31Vue3学习入门:初学者必备指南
- 2024-12-30Vue CLI多环境配置教程:轻松入门指南