react 中调用子组件方法

一、使用 `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>

  );

};
相关推荐
微臣愚钝28 分钟前
前端【3】--CSS布局,CSS实现横向布局,盒子模型
前端·css
有蝉2 小时前
elementUI项目中,只弹一个【token过期提示】信息框的处理
前端·javascript·elementui
m0_748244962 小时前
使用Nginx正向代理让内网主机通过外网主机访问互联网
java·前端·nginx
几何心凉3 小时前
ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档
前端
yqcoder3 小时前
Node.js 与 JavaScript 是什么关系
开发语言·javascript·node.js
贵州晓智信息科技4 小时前
Three.js实现动态水泡效果逐步解析GLSL着色器
开发语言·javascript·着色器
老K(郭云开)4 小时前
最新版Edge浏览器加载ActiveX控件技术——allWebPlugin中间件之awp_CreateActiveXObject接口用法
前端·javascript·chrome·中间件·edge
一点一木4 小时前
从零开始:使用 Brain.js 创建你的第一个神经网络(一)
前端·javascript·人工智能
小璇玑学前端4 小时前
微信小程序地图,定位,仿多多自提点
前端
我的div丢了肿么办4 小时前
vue3.5的更新保证你看的明明白白
前端·javascript·vue.js