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

react传递函数与回调函数原理

为什么 React 允许直接传递函数?

回调函数核心逻辑 

 

例子:父组件控制 Modal 的显示与隐藏

// 父组件 (ParentComponent.tsx)
import React, { useState } from 'react';
import { Modal, Button } from 'antd';
import ModalContent from './ModalContent';const ParentComponent = () => {const [visible, setVisible] = useState(false);// 用于关闭 Modal 的回调函数const hideModal = () => setVisible(false);return (<><Button type="primary" onClick={() => setVisible(true)}>新增算子</Button><Modaltitle="新增算子"visible={visible}onCancel={hideModal}  // 关闭 Modal 的回调函数footer={null}  // 自定义 footer 按钮>{/* 将回调函数传递给子组件 */}<ModalContent onClose={hideModal} /></Modal></>);
};export default ParentComponent;
// 子组件 (ModalContent.tsx)
import React from 'react';
import { Button } from 'antd';interface ModalContentProps {onClose: () => void;  // 父组件传递来的回调函数
}const ModalContent: React.FC<ModalContentProps> = ({ onClose }) => {return (<div><p>这是新增算子的内容</p><Button type="primary" onClick={onClose}>确认</Button>  {/* 调用传递来的回调函数 */}<Button onClick={onClose}>取消</Button>  {/* 调用传递来的回调函数 */}</div>);
};export default ModalContent;

 

具体例子

父组件

          <div><Modaltitle="添加算子"open={open}confirmLoading={confirmLoading}onOk={handleOk}onCancel={handleCancel}centered={true}footer={null} // 不使用 Modal 自带的 footer><AddOptsModal onCancel={handleCancel}></AddOptsModal></Modal></div>const [open, setOpen] = useState(false)const handleCancel = () => {setOpen(false)}

 子组件

import { Button } from 'antd'
interface AddOptsModalProps {onCancel: () => void
}const AddOptsModal: React.FC<AddOptsModalProps> = ({ onCancel }) => {return (<div><Button onClick={onCancel}>关闭</Button></div>)
}
export default AddOptsModal

 

http://www.lryc.cn/news/538304.html

相关文章:

  • 华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)
  • Spring源码分析のBean扫描流程
  • Ubuntu安装docker:docker-desktop : 依赖: docker-ce-cli 但无法安装它、无法定位软件包 docker-ce-cli
  • 基于大数据的奥运会获奖数据分析系统设计与实现
  • 数据结构 堆和priority_queue
  • Dockerfile 编写推荐
  • 【抽象代数】1.2. 半群与群
  • Django中实现简单易用的分页工具
  • 「软件设计模式」装饰者模式(Decorator)
  • CI/CD(二)docker-compose安装Jenkins
  • OpenCV机器学习(1)人工神经网络 - 多层感知器类cv::ml::ANN_MLP
  • ProxySQL构建PolarDB-X标准版高可用路由服务三节点集群
  • 15.1 Process(进程)类
  • elasticsearch8 linux版以服务的方式启动
  • 小米 R3G 路由器刷机教程(Pandavan)
  • 某大型业务系统技术栈介绍【应对面试】
  • 【区块链】零知识证明基础概念详解
  • 建筑行业安全技能竞赛流程方案
  • 数据结构:图;邻接矩阵和邻接表
  • DeepSeek-R1论文阅读及蒸馏模型部署
  • OpenEuler学习笔记(三十三):在 OpenEuler 上搭建 OpenGauss 数据库环境
  • [C++]多态详解
  • 调用DeepSeek API接口:实现智能数据挖掘与分析
  • ffmpeg-cli-wrapper操作ffmpeg的工具
  • 【Qt】QObject类的主要功能
  • 学习笔记之debian的thonny开发(尚未验证)--从stm32裸机到linux嵌入式系统
  • 把 CSV 文件摄入到 Elasticsearch 中 - CSVES
  • PyQt组态软件 拖拽设计界面测试
  • 【Python爬虫(1)】专栏开篇:夯实Python基础
  • Java中的分布式(概念说明)