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

react slot传递

 子组件(FormContainer)实现

功能需求​:

  • 管理内部状态(如表单输入值)。
  • 点击确认按钮时,将状态传递给父组件。
  • 点击取消按钮时,执行清理操作。
    import React, { useState } from 'react';const FormContainer = ({ children, onConfirm, onCancel }) => {const [inputValue, setInputValue] = useState('');// 确认按钮点击处理const handleConfirm = () => {onConfirm(inputValue); // 传递值给父组件};// 取消按钮点击处理const handleCancel = () => {setInputValue(''); // 清空状态onCancel(); // 通知父组件};// 克隆子元素,注入点击事件const childrenWithProps = React.Children.map(children, (child) => {const action = child.props['data-action'];// 合并原有 onClick 和自定义处理逻辑const childOnClick = child.props.onClick;const onClick = (e) => {childOnClick?.(e); // 原有 onClickif (action === 'confirm') handleConfirm();else if (action === 'cancel') handleCancel();};return React.cloneElement(child, { onClick });});return (<div><inputvalue={inputValue}onChange={(e) => setInputValue(e.target.value)}/>{childrenWithProps}</div>);
    };

     父组件调用

    父组件通过 onConfirm 和 onCancel 接收子组件值:

const ParentComponent = () => {const handleConfirm = (value) => {console.log('提交的值:', value);};const handleCancel = () => {console.log('操作取消');};return (<FormContainer onConfirm={handleConfirm} onCancel={handleCancel}><button data-action="confirm">确认</button><button data-action="cancel">取消</button></FormContainer>);
};

 

http://www.xdnf.cn/news/2419.html

相关文章:

  • Python 操作 Excel 插入图表:解锁数据可视化的高效密码
  • 使用vue2 开发一个纯静态的校园二手交易平台-前端项目练习
  • WEBSTORM前端 —— 第2章:CSS —— 第3节:背景属性与显示模式
  • SpringMVC 通过ajax 前后端数据交互
  • 空间矩阵的思考
  • SpringMVC框架
  • 二、Web服务常用的I/O操作
  • HTML5 新特性详解:语义化标签、表单与音视频嵌入
  • pytorch写张量pt文件,libtorch读张量pt文件
  • 网络基础概念
  • HCIP知识点总结思维导图
  • Redis远程链接应用案例
  • 【计算机网络物理层】从信号传输到介质选型的核心技术解析
  • Web服务器技术选型指南:主流方案、核心对比与策略选择
  • 数据可视化 —— 饼图
  • 《MySQL 技术内幕-innoDB 存储引擎》笔记
  • 简述删除一个Pod流程?
  • HTTP:十二.HTTPS
  • UE 新建一个自带光照的场景
  • Git常用命令简明教程
  • 【每日随笔】文化属性 ① ( 天机 | 强势文化与弱势文化 | 文化属性的形成与改变 | 强势文化 具备的特点 )
  • 有源晶振输出匹配电阻选择与作用详解
  • AUTOSAR_Feature_Model_Analysis
  • 近期有哪些断链危机?如何提升供应链风险管理能力?
  • 头歌实训之游标触发器
  • 【Jupyter 启动时如何指定目录】
  • Android开机动画资源包制作(测试使用)
  • 数据库3,
  • 使用wavesurferJs实现录音音波效果
  • 突破常规:探索无 get 方法类设计的独特魅力