首页 > 其他分享 >React函数式组件环境中父组件调用子组件的方法

React函数式组件环境中父组件调用子组件的方法

时间:2024-06-13 20:10:33浏览次数:9  
标签:useRef const doSomething React 中父 组件 ref

import React, { useRef, useCallback } from 'react';
 
// 子组件
const ChildComponent = React.forwardRef((props, ref) => {
  const doSomething = useCallback(() => {
    console.log('Do something in the child component');
  }, []);
 
  // 当组件挂载后,将这个组件的实例传递给父组件
  React.useImperativeHandle(ref, () => ({
    doSomething
  }));
 
  return <div>Child Component</div>;
});
 
// 父组件
const ParentComponent = () => {
  const childRef = useRef(null);
 
  const handleClick = () => {
    if (childRef.current) {
      childRef.current.doSomething();
    }
  };
 
  return (
    <>
      <button onClick={handleClick}>Call Child Method</button>
      <ChildComponent ref={childRef} />
    </>
  );
};
 
export default ParentComponent;

ChildComponent是一个函数式组件,它使用useImperativeHandle钩子来暴露一个doSomething方法。ParentComponent是父组件,它使用useRef钩子创建了一个ref并将其传递给ChildComponent。当按钮被点击时,父组件通过ref调用子组件的doSomething方法。

标签:useRef,const,doSomething,React,中父,组件,ref
From: https://www.cnblogs.com/openmind-ink/p/18246686

相关文章

  • uni-app在微信小程序端自定义组件中样式穿透失效
    前情uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app。坑位最近因UI有别的事忙,导致手上暂时没什么活了,我于是抽时间优化项目代码,第一件事就是抽取复用组件。正好项目中有多处用到uVie......
  • 微服务架构qiankun集成react子应用
    前一篇文章讲了qiankun集成vue子应用,这篇随笔讲集成react子应用。1、创建react子应用用react脚手架初始化一个react项目,至于项目的数据仓库store和路由、以及UI组件库这里就不做讲解,可以自己自行网上找资料配置。create-react-appmy-react-app2、在src路径下创建publicPat......
  • 什么是React的虚拟DOM?它如何工作以提高性能?
    React的虚拟DOM(VirtualDOM)是React框架中的一个核心概念,它是一个轻量级的JavaScript对象树,用于描述真实DOM的结构和属性。虚拟DOM的引入极大地提高了React应用程序的性能,其工作原理主要体现在以下几个方面:虚拟DOM的定义虚拟DOM是一个JavaScript对象,它是真实DOM的抽象表示......
  • 界面控件DevExpress WinForms垂直&属性网格组件 - 拥有更灵活的UI选择(一)
    DevExpressWinForms垂直&属性网格组件旨在提供UI灵活性,它允许用户显示数据集中的单个行或在其90度倒置网格容器中显示多行数据集。另外,用户可以把它用作一个属性网格,就像在VisualStudioIDE中那样。P.S:DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有......
  • vite+vue3展示文件夹内的所有组件
    https://www.cnblogs.com/y-shmily/p/16546743.html 在组件目录下新建index.jsimport{markRaw}from"vue";constfilesNameList=[];constfiles=import.meta.glob("./*.vue");for(constkeyinfiles){constfileName=key.replace(/(\.......
  • vue 父子组件交互 props,emit,slot
    props 子组件可以通过 props 从父组件接受动态数据vue2 vue3defineProps() 是一个编译时宏,并不需要导入   emit()emit()子组件向父组件触发事件vue2this.$emit() 的第一个参数是事件的名称。其他所有参数都将传递给事件监听器。 vue3emit() 的第一个参......
  • Unity Camera组件ClearFlags属性介绍以及区分UI摄像机和角色摄像机
    在Unity中,Camera.clearFlags属性用于定义相机在渲染场景之前如何清除屏幕。这个属性有几个不同的选项,每个选项都会以不同的方式清除屏幕。具体选项如下:Skybox:如果相机有分配的天空盒(Skybox),在渲染场景之前将用天空盒来清除屏幕。如果没有分配天空盒,则使用纯色来清除屏幕,颜色......
  • 使用windows的官方组件 把u盘 弄成pe系统
    下载工具https://learn.microsoft.com/en-us/windows-hardware/get-started/adk-install1、格式化自己的u盘2、拷贝pe文件到u盘3、设置u盘为pe启动项安装好adk跟pe插件后。在菜单里面有一个”部署跟环境工具“管理员身份运行,执行copypeamd64C:\WinPE_amd64其中C:......
  • 在线CAD块表的二次开发(react浏览编辑CAD插件)
    前言在DWG数据库中,所有图块都存放在块表McDbBlockTable()中,块表中每一条记录称为图块记录对象McDbBlockTableRecord(),图块记录中存放着所有实体数据,用户可以通过改变图块的属性设置来修改其对应着的实体数据。块表操作1.获取当前控件的数据库块表我们可以通过调用mxcad中的......
  • element ui 封装Table组件
    1.首先npmielement-ui-S安装element-ui2.引入Element在main.js中写入以下内容:importVuefrom'vue';importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css';importAppfrom'./App.vue';Vue.use(Ele......