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>

  );

};
相关推荐
赵得C1 分钟前
创建 SVG 图标预览页面:从零实现到解决 CORS 问题
前端·javascript·html
IT_陈寒7 分钟前
Java的HashMap线程安全问题让我深夜掉光了头发
前端·人工智能·后端
三掌柜66611 分钟前
ArkWeb 手记 04|Web 返回键别再一刀切
前端·harmonyos
光影少年17 分钟前
RN与Flutter架构区别
前端·flutter·react native·react.js·架构·node.js
peter676824 分钟前
css学习小结
前端·css·学习
liangshanbo121525 分钟前
什么是CSS原子化?它的优劣势是什么?
前端·css·tensorflow·css原子化
.道阻且长.27 分钟前
C++ 11:可变参数模板
前端·c++·算法
IMPYLH31 分钟前
HTML 的 <th> 元素
前端·html
风骏时光牛马31 分钟前
AI浪潮下程序员的职场破局与能力成长思考
前端
ljt272496066133 分钟前
Vue笔记(九)--defineEmits
javascript·vue.js·笔记