当前位置: 首页 > 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>

      <Modal
        title="新增算子"
        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>
            <Modal
              title="添加算子"
              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

 

相关文章:

  • 在Win11电脑上安装mysql并成功登录
  • MongoDB 常用命令速查表
  • 【JavaEE进阶】IoC详解
  • 芯麦GC6208:革新摄像机与医疗设备的智能音频解决方案
  • 单位切换且后换算得方法
  • 【Java八股】JVM
  • springboot如何将lib和jar分离
  • 配置Mysql8读写分离(未完成)
  • Node.js 调用 DeepSeek API 完整指南
  • AI大模型(如GPT、BERT等)可以通过自然语言处理(NLP)和机器学习技术,显著提升测试效率
  • 达梦 跟踪日志诊断
  • 附录 面向对象
  • C++ ——构造函数
  • C语言简单练习题
  • Python自动化实现思路
  • 安科瑞光储充一体化微电网系统的设计与优化研究-安科瑞 蒋静
  • Windows 找不到文件gpedit.msc,没有组策略编辑器,解决办法附上
  • 前端知识速记—JS篇:JS数组方法
  • CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display
  • 基于Python flask-sqlalchemy的SQLServer数据库管理平台
  • 浙江省住房和城乡建设部网站/合肥关键词排名技巧
  • 动漫做视频在线观看网站/天津百度推广公司
  • 镇江网站推广/如何注册一个自己的网站
  • 网站做cdn/网上商城建设
  • 网站备案变更 能让首页关闭 二级域名继续/2024年重大政治时事汇总
  • 留言网站建设的报告/网站seo技术能不能赚钱