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;
相关推荐
Magnum Lehar29 分钟前
vulkan游戏引擎的renderer下的vulkan缓冲区实现
java·前端·游戏引擎
_CodePencil_40 分钟前
CSS专题之flex: 1常见问题
前端·css·html·css3·html5
哎呦你好1 小时前
CSS 文字样式全解析:从基础排版到视觉层次设计
前端·css
哎呦你好1 小时前
CSS 链接样式全解析:从基础状态到高级交互效果
前端·css
花菜会噎住1 小时前
网页 CSS美化2(详解)
前端·css·html·基础·网页
yi个名字1 小时前
Linux环境变量与地址空间
linux·前端·计算机网络
Nejosi_念旧1 小时前
TypeScript 泛型讲解
前端·javascript·typescript
layman05281 小时前
vue——v-pre的使用
前端·javascript·vue.js
zizisuo2 小时前
Java集合框架深度剖析:结构、并发与设计模式全解析
java·javascript·数据结构·设计模式
要加油哦~2 小时前
刷题 | 牛客 - js中等题-下(更ing)30/54知识点&解答
java·开发语言·javascript