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>

  );

};
相关推荐
ITOM运维行者4 分钟前
从零搭建企业级服务器监控体系:踩坑实录与架构设计
前端·后端
monologues8 分钟前
深入 Vue 3 源码:响应式系统的精妙设计与编译优化
前端
hunterandroid10 分钟前
Paging 3 分页:从手动分页到声明式加载
前端
用户40993225021211 分钟前
Vue状态管理入门第四章:组合式store和SSR风险
前端·vue.js·后端
Csvn32 分钟前
CSS :has() 选择器实战:没有它之前我们写了多少冗余 JS
前端·css
不好听61336 分钟前
JavaScript 的 this 到底指向谁?
javascript·面试
梨子同志36 分钟前
TypeScript
前端
星栈38 分钟前
LiveView 表单真香,但 changeset 也真会坑人:实时校验、错误展示、前后端校验合一
前端·前端框架·elixir
触底反弹38 分钟前
🔥 2026 年爆火的 Harness Engineering 到底是什么?从原理到实战一文讲透
javascript·人工智能·程序员
mONESY39 分钟前
一文搞定JavaScript不同场景中 this 的指向问题
javascript