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()调用子组件的方法来获取数据。

相关推荐
GuWenyue5 分钟前
放弃云端API!一套React+WebGPU本地LLM方案,零数据上传、离线可用
前端·人工智能·前端框架
原则猫1 小时前
函数/变量提升
前端
小林ixn2 小时前
深入 React useState:从闭包陷阱到性能优化的完整指南
react.js·性能优化
独泪了无痕2 小时前
Vue3 Hooks使用实战解析
前端·vue.js
shawxlee3 小时前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
用户059540174464 小时前
把记忆存储的回归测试从手工换成 Playwright + GitHub Actions,线上缺陷降低 80%
前端·css
触底反弹4 小时前
🚀 从 DOM0 级到 React 合成事件:前端事件监听的 20 年演进史
前端·react.js·面试
kyriewen4 小时前
我给前端项目的接口请求套了6层保护——才发现以前一直在裸奔
前端·javascript·面试
颜酱4 小时前
04 | 召回前置准备:搭好召回所需的四个数据库
前端·人工智能·后端
郝亚军6 小时前
如何安装webstorm、Node.js和vue CLI
前端·javascript·vue.js