一、使用 `ref` 和 `forwardRef`
1. 子组件暴露方法
首先使用`forwardRef`来定义组件,使得组件可以接收`ref`。然后定义了一个`childMethod`方法,并且使用`useImperativeHandle`来将这个方法暴露给父组件。
javascript
import { forwardRef, useImperativeHandle } from "react";
const ChildComponent = forwardRef((props, ref) => {
const childMethod = () => {
console.log("子组件方法被调用");
};
useImperativeHandle(ref, () => ({
childMethod,
}));
return <div>{/* 子组件内容 */}</div>;
});
2. 父组件使用方法
父组件通过`ref`就可以访问到`childMethod`。
javascript
import { useRef } from "react";
const ParentComponent = () => {
const childRef = useRef();
const handleClick = () => {
if (childRef.current) {
childRef.current.childMethod();
}
};
return (
<div>
<button onClick={handleClick}>调用子组件方法</button>
<ChildComponent ref={childRef} />
</div>
);
};