当前位置: 首页 > news >正文

React modal暴露ref简洁使用

  • 父组件使用
import { useRef } from 'react'
import { FormModal } from './modal'const IndexRoute = () => {const formRef = useRef<any>()const openModal = (row?: any) => {const params = {title: row?.id ? `【${row.name}】编辑` : '创建',isView: false,row,api: row?.id ?  editXXX : createXXX,refreshList: () => proTableProps.actionRef.current?.reload()}formRef.current?.acceptParams(params)}return (<><Button onClick={openModal}>open modal</Button><FormModal ref={formRef} />others page content</>)
}export default IndexRoute
  • 子组件
import { Icons } from '@/components/antd-icons'
import { Button, Form, Input, message, Modal, Upload } from 'antd'
import { forwardRef, useEffect, useImperativeHandle, useState } from 'react'export const FormModal = forwardRef((props: any, ref) => {const [form] = Form.useForm()const [confirmloading, setConfirmloading] = useState<boolean>(false)const [visible, setVisible] = useState(false)const [modalProps, setModalProps] = useState<any>({isView: false,title: '',row: {},api: () => {}})const { isView, title, row, api, refreshList } = modalPropsconst onCancel = () => {setConfirmloading(false)form.resetFields()setVisible(false)}const acceptParams = (params: any) => {setModalProps(params)setVisible(true)params.row ? form.setFieldsValue({ ...params.row }) : form.resetFields()}const onOk = async () => {form.validateFields().then(async formValue => {setConfirmloading(true)const res = await api({ ...formValue, id: row?.id })if (res) {message.success(`操作成功`)onCancel()refreshList()}setConfirmloading(false)})}useImperativeHandle(ref,() => ({acceptParams}),[])useEffect(() => {row && Object.keys(row)?.length > 0? form.setFieldsValue({ ...row }): form.resetFields()}, [row])const normFile = (e: { fileList: any }) => {if (Array.isArray(e)) {return e}return e && e.fileList}return (<ModalforceRendertitle={title}open={visible}onOk={onOk}onCancel={onCancel}confirmLoading={confirmloading}destroyOnClose={true}><Formform={form}disabled={isView}initialValues={row}layout="horizontal"labelCol={{ span: 4 }}size="small"><Form.Itemlabel="名称"name="name"rules={[{ required: true, message: '请输入版本名称!' }]}><Input placeholder="name" /></Form.Item>{/* 文件上传form包裹demo */}<Form.Itemname="calibration_zip"label="附件"valuePropName="fileList"getValueFromEvent={normFile}><Upload maxCount={1} beforeUpload={() => false}><Button size="small" icon={<Icons.UploadOutlined />}>上传</Button></Upload></Form.Item></Form></Modal>)
})

相关文章:

React modal暴露ref简洁使用

父组件使用 import { useRef } from react import { FormModal } from ./modalconst IndexRoute () > {const formRef useRef<any>()const openModal (row?: any) > {const params {title: row?.id ? 【${row.name}】编辑 : 创建,isView: false,row,api: r…...

小米路由器ax1500+DDNS+公网IP+花生壳实现远程访问

有远程办公的需求&#xff0c;以及一些其他东西。 为什么写&#xff1f; ax1500路由器好像没搜到相关信息。以及其中有一点坑。 前置 公网ip Xiaomi路由器 AX1500 MiWiFi 稳定版 1.0.54 实现流程 花生壳申请壳域名https://console.hsk.oray.com/ 这里需要为域名实名认证 …...

毕设分享 大数据用户画像分析系统(源码分享)

文章目录 0 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…...

使用 Redis 实现分布式锁:原理、实现与优化

在分布式系统中&#xff0c;分布式锁是确保多个进程或线程在同一时间内对共享资源进行互斥访问的重要机制。Redis 作为一个高性能的内存数据库&#xff0c;提供了多种实现分布式锁的方式。本文将详细介绍如何使用 Redis 实现分布式锁&#xff0c;包括基本原理、实现方法、示例代…...

Android常用C++特性之std::make_pair

声明&#xff1a;本文内容生成自ChatGPT&#xff0c;目的是为方便大家了解学习作为引用到作者的其他文章中。 std::make_pair 是 C 标准库中的一个函数模板&#xff0c;用于创建一个 std::pair 对象。std::pair 是一种可以存储两个不同类型值的简单数据结构&#xff0c;类似于二…...

Kafka-参数详解

一、上下文 从《Kafka-初识》中可以看到运行kafka-console-producer和 kafka-console-consumer来生产和消费数据时会打印很多参数&#xff0c;这些参数给我们应对多种场景提供了遍历&#xff0c;除了producer和consumer的提供了参数外&#xff0c;Kafka服务器集群中的broker也…...

Docker Overlay2 空间优化

目录 分析优化数据路径规划日志大小限制overlay2 大小限制清理冗余数据 总结 分析 overlay2 目录占用磁盘空间较大的原因通常与 Docker 容器和镜像的存储机制以及它们的长期累积相关&#xff0c;其实我之前在 Docker 原理那里已经提到过了。 通常时以下几种原因导致&#xff…...

第 3 章:使用 Vue 脚手架

1. 初始化脚手架 1.1 说明 Vue 脚手架是 Vue 官方提供的标准化开发工具&#xff08;开发平台&#xff09;。最新的版本是 5.x。文档: https://cli.vuejs.org/zh/ 1.2 具体步骤 第一步&#xff08;仅第一次执行&#xff09;&#xff1a;全局安装vue/cli。 npm install -g vu…...

Spring 循环依赖详解:问题分析与三级缓存解决方案

在Spring框架中&#xff0c;循环依赖&#xff08;Circular Dependency&#xff09;是指多个Bean相互依赖&#xff0c;形成一个循环引用。例如&#xff0c;Bean A依赖于Bean B&#xff0c;而Bean B又依赖于Bean A。这种情况在Bean创建时可能导致Spring容器无法正常完成初始化&am…...

爬虫prc技术----小红书爬取解决xs

知识星球&#xff1a;知识星球 | 深度连接铁杆粉丝&#xff0c;运营高品质社群&#xff0c;知识变现的工具知识星球是创作者连接铁杆粉丝&#xff0c;实现知识变现的工具。任何从事创作或艺术的人&#xff0c;例如艺术家、工匠、教师、学术研究、科普等&#xff0c;只要能获得一…...

uni-app之旅-day06-加入购物车

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言8.0 创建 cart 分支8.1 配置 vuex8.2 创建购物车的 store 模块8.3 在商品详情页中使用 Store 中的数据8.4 实现加入购物车的功能8.5 动态统计购物车中商品的总数…...

【Kubernetes】常见面试题汇总(五十六)

目录 123. pod 创建失败&#xff1f; 124. kube-flannel-ds-amd64-ndsf7 插件 pod 的 status 为 Init:0/1 &#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#x…...

LabVIEW激光诱导击穿光谱识别与分析系统

LabVIEW激光诱导击穿光谱&#xff08;LIBS&#xff09;分析系统利用高能量脉冲激光产生高温等离子体&#xff0c;通过分析等离子体发出的光谱来定性分析样品中的元素种类。该系统的开发集成了软件与硬件的设计&#xff0c;实现了自动识别和定性分析功能&#xff0c;适用于环境监…...

Redis的基础篇

Redis的基础篇 1.在CentOs7上安装Redis&#xff08;最好不要在windows上装&#xff0c;版本少&#xff09; 1.安装gcc --> yum install gcc tcl(可能会报错&#xff0c;重新安装yum就行了) 2.下载redis --> 最好是6.2上的版本 3.解压redis --> tar -zxvf redis-6.2.…...

java和python哪个好

Java和Python各有优缺点&#xff0c;适合不同的应用场景&#xff0c;具体看你需要在哪种情况下使用编程语言。以下是Java和Python的一些对比&#xff0c;帮助你决定哪种更适合你的需求&#xff1a; 性能 Java&#xff1a;编译型语言&#xff0c;编译成字节码运行在Java虚拟机&…...

Electron + ts + vue3 + vite

正常搭建脚手架&#xff1a;npm create vitelatest 项目名称 安装electron的相关依赖&#xff1a;注&#xff1a;安装时终端url要项目名那一层 安装npm install electron -D安装打包工具&#xff1a;npm install electron-builder -D开发工具&#xff1a;npm install electron-…...

《大规模语言模型从理论到实践》第一轮学习--分布式训练

基础知识 5分钟看懂电脑硬件配置 - 知乎 (zhihu.com) 显存 定义&#xff1a;显存是显卡上的专用高速缓存&#xff0c;用于存储图形处理器&#xff08;GPU&#xff09;在处理图像和视频数据时所需的临时数据。 功能&#xff1a;显存的主要作用是提供GPU快速访问的数据存储&a…...

多模态智能

研究背景&#xff1a; 深度学习从1.0的端到端走向2.0的预训练&#xff0c;通过大规模预训练来记忆多模态数据中共性知识&#xff0c;增强对下游任务的学习能力。 深度学习1.0&#xff1a;特定任务有标注训练数据->随机初始化训练->最终模型 深度学习2.0&#xff1a;大规…...

【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版

文章目录 一、背景描述二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入(二) 特征工程(三) 样本分区(四) 模型训练和评估(五) 模型可视化 三、总结 一、背景描述 股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因…...

大模型微调

概述 什么是模型微调&#xff1f; 模型微调是通过微调工具&#xff0c;使用独特的场景数据对平台的基础模型进行调整&#xff0c;帮助你快速定制一个更符合业务需求的大型模型。其优势在于对基础模型进行小幅调整以满足特定需求&#xff0c;相比于训练一个新模型&#xff0c;…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...