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>

  );

};
相关推荐
南风知我意9571 分钟前
【前端面试2】基础面试(杂项)
前端·面试·职场和发展
LJianK129 分钟前
BUG: Uncaught Error: [DecimalError] Invalid argument: .0
前端
2601_9496130233 分钟前
flutter_for_openharmony家庭药箱管理app实战+用药知识详情实现
android·javascript·flutter
No Silver Bullet39 分钟前
Nginx 内存不足对Web 应用的影响分析
运维·前端·nginx
一起养小猫43 分钟前
Flutter for OpenHarmony 实战 表单处理与验证完整指南
android·开发语言·前端·javascript·flutter·harmonyos
weixin_395448911 小时前
main.c_cursor_0130
前端·网络·算法
C澒1 小时前
SGW 接入层运维实战:配置查看 + 监控分析 + 日志排查
前端·安全·运维开发
德育处主任Pro2 小时前
『NAS』在群晖部署一款太空策略游戏-ogame-vue-ts
前端·vue.js·游戏
摘星编程2 小时前
React Native鸿蒙版:自定义useMask输入掩码
react native·react.js·harmonyos
摘星编程2 小时前
OpenHarmony + RN:自定义useValidator表单验证
react native·react.js·harmonyos