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>

  );

};
相关推荐
临江仙4553 小时前
前端骚操作:用户还在摸鱼,新版本已悄悄上线!一招实现无感知版本更新通知
前端·vue.js
想个什么名好呢3 小时前
解决uniapp的H5项目uni-popup页面滚动穿透bug
前端
用户93816912553603 小时前
Vue3项目--mock数据
前端
前端加油站3 小时前
一种新HTML 页面转换成 PDF 技术方案
前端·javascript·vue.js
w***Q3503 小时前
Vue打包
前端·javascript·vue.js
有事没事实验室3 小时前
router-link的custom模式
前端·javascript·vue.js
4***V2023 小时前
Vue3响应式原理详解
开发语言·javascript·ecmascript
常乐我净6163 小时前
十、路由和导航
前端
Tonychen3 小时前
TypeScript 里 infer 常见用法
前端·typescript
米诺zuo3 小时前
MUI sx prop 中的响应式适配
前端