antd drawer extra中按钮点击事件获取子组件的数据

在Ant Design的Drawer组件中,需要在extra区域的按钮点击事件中获取子组件的数据,可以通过以下步骤实现:

使用useRef钩子在父组件中创建一个ref引用子组件。

在子组件中使用useImperativeHandle或forwardRef来暴露一个方法给父组件调用。

在extra按钮的点击事件中,调用子组件暴露的方法获取数据。

javascript 复制代码
// 子组件
import React, { useImperativeHandle, forwardRef } from 'react';
 
const ChildComponent = forwardRef((props, ref) => {
  const data = { name: '子组件数据' };
 
  useImperativeHandle(ref, () => ({
    getData: () => data
  }));
 
  return (
    <div>子组件内容</div>
  );
});
 
export default ChildComponent;
 
// 父组件
import React, { useRef } from 'react';
import { Drawer } from 'antd';
import ChildComponent from './ChildComponent';
 
const ParentComponent = () => {
  const childRef = useRef();
 
  const handleButtonClick = () => {
    if (childRef.current) {
      const data = childRef.current.getData();
      console.log('从子组件获取的数据:', data);
    }
  };
 
  return (
    <Drawer
      title="Drawer标题"
      extra={
        <button onClick={handleButtonClick}>获取子组件数据</button>
      }
    >
      <ChildComponent ref={childRef} />
    </Drawer>
  );
};
 
export default ParentComponent;

上述代码中,ChildComponent是一个子组件,它使用forwardRef获取了一个ref引用。在ChildComponent内部,它通过useImperativeHandle暴露了一个getData方法,该方法返回需要传递给父组件的数据。在ParentComponent的handleButtonClick事件处理函数中,通过childRef.current.getData()调用子组件的方法来获取数据。

相关推荐
lbb 小魔仙几秒前
鸿蒙跨平台项目实战篇01:React Native Bundle版本管理详解
react native·react.js·harmonyos
明月_清风2 分钟前
浏览器里的 SSD:IndexedDB 极简封装实战
前端·indexeddb
2301_796512525 分钟前
【精通篇】打造React Native鸿蒙跨平台开发高级复合组件库开发系列:Pagination 分页(绑定当前页码)
javascript·react native·react.js·ecmascript·harmonyos
谢尔登6 分钟前
深入React19任务调度器Scheduler
开发语言·前端·javascript
长城20247 分钟前
HTML5中表单的pattern属性解析
前端·正则表达式·html·html5·pattern·pattern属性·pattern正则表达式
阿珊和她的猫10 分钟前
深入解析如何监听浏览器的页面关闭事件
前端·javascript·vue.js
敲代码的柯基10 分钟前
一篇文章理解tsconfig.json和vue.config.js
javascript·vue.js·json
henry10101011 分钟前
DeepSeek生成的HTML5小游戏 -- 黑8台球
前端·javascript·css·游戏·html
阿珊和她的猫19 分钟前
Safari浏览器中监听页面关闭事件的技术探讨
前端·safari
昱宸星光20 分钟前
spring cloud gateway内置路由断言工厂
java·开发语言·前端