忙里偷闲,先记下来写个大概,反正就是把代码复制跑一遍就知道怎么用了

父级代码:
import React, { useRef } from 'react';
import HelloWorld2 from '@/components/HelloWorld/HelloWorld2';
const Test2 =(props)=> {
const test1 = () => {
console.log("父组件准备调用子组件方法");
userQqq.current.getName();
};
const userQqq = useRef(); // 命名最好还是user开头
return (
<div>
<button onClick={test1}>调用子组件方法getName</button>
<HelloWorld2 ref={userQqq}/>
</div>
)
}
export default Test2;
子级代码:
import React, { forwardRef, useImperativeHandle } from 'react';
// 子组件不再使用react的React方式来创建,
// 直接通过函数的方式创建,函数子组件接收两个参数,
// 第一个参数是父组件传过来的其它参数,第二个参数是ref
const HelloWorld2 = (props, ref) => {
const getName = () => {
console.log("子组件方法");
};
// react规定必须使用useImperativeHandle方法,
// 来保存并抛出想要传递给父组件的方法或者数据,
// 第一个参数是ref,第二个参数是函数,返回想要抛出的对象集合
useImperativeHandle(ref, () => ({
getName,
}));
return (
<div>子组件</div>
);
};
//必须通过forwardRef方法抛出函数组件
export default forwardRef(HelloWorld2);