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

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

 


http://www.kler.cn/a/549845.html

相关文章:

  • pix2text 使用经验
  • 《Performance Analysisi and Tuning on Modern CPU》阅读笔记
  • springboot项目如何部署到tomcat中
  • 12. Docker 网络(bridge,host,none,container,自定义网络)配置操作详解
  • DeepSeek 与 Ollama:本地运行 AI 模型的完美组合
  • 5-CDE说明
  • Selenium定位元素的方法及其语法
  • 个人笔记二:数电篇
  • ORB-SLAM3的源码学习: Settings.cc:Settings::readCamera1/readCamera2 从配置文件中加载相机参数
  • [BJDCTF2020]EzPHP
  • 【DeepSeek】DeepSeek R1 本地windows部署(Ollama+Docker+OpenWebUI)
  • IDEA集成DeepSeek
  • NO.17十六届蓝桥杯备战|do-while循环|break和continue语句|三道练习(C++)
  • SQL递归技巧
  • 盲注技术获取数据库的表名、列名和数据
  • 【test】fio测试 linux存储性能测试
  • linux笔记:shell中的while、if、for语句
  • 开源项目Perplexica-master
  • 对于简单的HTML、CSS、JavaScript前端,我们可以通过几种方式连接后端
  • Shell脚本和Python的工作路径