react v-18父组件调用子组件的方法和数据

版本

javascript 复制代码
"react": "^18.1.0",
"react-dom": "^18.1.0",

父组件

javascript 复制代码
import React, { useState, useRef, memo, useEffect } from "react";
import { useTranslation } from "react-i18next";
import { Card } from "antd";

import Childdren from './child/child';
function Dashboard() {
  let childRef:any = useRef(null);
  const handleClick = () => {
     console.log('子组件:', childRef.current)  //打印:{num: 999, add: ƒ}
    childRef.current.add() //调用
  }
  return (
        <Card style={{ minHeight: "calc(100vh - 64px)" }}>
            <Childdren ref={childRef} title={'我是父组件的数据'} num={123} fun={() => alert('传递了一个函数')} />
            
            <button onClick={handleClick}>父组件调子组件方法</button>
        </Card>
  );
}

export default Dashboard;

子组件 (通过useImperativeHandle() 抛出)

javascript 复制代码
// props (类组件则使用this.props)
import React, { useImperativeHandle } from "react";
const Childdren = React.forwardRef((props:any, ref) => {
  useImperativeHandle(
    ref,
    () => ({ add,num }) //父组件通过ref获取值,要在这里抛出
  );
  const num = 999;
  const add = () => {
    console.log('我是子组件方法')
  };
  return (
    <div>
      <h1>父传子:{props.title}</h1>
      <button >这是子组件</button>
      
    </div>
  );
});
export default Childdren;
相关推荐
Moment1 分钟前
富文本编辑器技术选型,到底是 Prosemirror 还是 Tiptap 好 ❓❓❓
前端·javascript·面试
xkxnq6 分钟前
第二阶段:Vue 组件化开发(第 18天)
前端·javascript·vue.js
晓得迷路了7 分钟前
栗子前端技术周刊第 112 期 - Rspack 1.7、2025 JS 新星榜单、HTML 状态调查...
前端·javascript·html
怕浪猫10 分钟前
React从入门到出门 第五章 React Router 配置与原理初探
前端·javascript·react.js
jinmo_C++10 分钟前
从零开始学前端 · HTML 基础篇(一):认识 HTML 与页面结构
前端·html·状态模式
哈__15 分钟前
React Native 鸿蒙跨平台开发:LayoutAnimation 实现鸿蒙端表单元素的动态添加动画
react native·react.js·harmonyos
鹏多多17 分钟前
前端2025年终总结:借着AI做大做强再创辉煌
前端·javascript
哈__20 分钟前
React Native 鸿蒙跨平台开发:Vibration 实现鸿蒙端设备的震动反馈
javascript·react native·react.js
WebGISer_白茶乌龙桃22 分钟前
Cesium实现“悬浮岛”式,三维立体的行政区划
javascript·vue.js·3d·web3·html5·webgl
小Tomkk25 分钟前
⭐️ StarRocks Web 使用介绍与实战指南
前端·ffmpeg