首页 > 其他分享 >react父组件调用子组件内部的dom或方法

react父组件调用子组件内部的dom或方法

时间:2024-11-27 13:22:37浏览次数:7  
标签:current useRef const useImperativeHandle dom focus react 组件

在 React 中,通过 React.forwardRef 和 useImperativeHandle 可以实现将父组件的 ref 转发给子组件,从而引用子组件的 DOM 或方法。以下是实现的步骤和代码示例:

import React, { forwardRef, useImperativeHandle, useRef } from "react";

const Child = forwardRef((props, ref) => {
  const inputRef = useRef();
   //暴露给父组件的方法
  useImperativeHandle(ref, () => ({
    focus: () => {
      inputRef.current.focus();
    },
    clear: () => {
      inputRef.current.value = "";
    },
  }));

  return <input ref={inputRef} type="text" placeholder="Enter something" />;
});

function Parent() {
  const childRef = useRef();

  const handleFocus = () => {
    childRef.current.focus();
  };

  const handleClear = () => {
    childRef.current.clear();
  };

  return (
    <div>
      <Child ref={childRef} />
      <button onClick={handleFocus}>Focus Input</button>
      <button onClick={handleClear}>Clear Input</button>
    </div>
  );
}

export default Parent;

  

标签:current,useRef,const,useImperativeHandle,dom,focus,react,组件
From: https://www.cnblogs.com/94pm/p/18572159

相关文章

  • AntDesign - Vue Table组件 实现动态表格、列宽计算(方式二)
    朋友们,按照上文(方式一)思路,实现了动态表格和表头分组,这篇按照方式一的需求,扩展出另一种代码写法;一、表格头表格columns还是定义在data(){}中,初始化静态列数组,配置项列由后端接口返回(第二点写动态配置项代码);在方式一基础上加了筛选菜单功能,因此变化代码部分如下......
  • ReactPress部署指南:为技术小白量身定制
    近期,阮一峰在科技爱好者周刊第325期中推荐了一款开源工具——ReactPress,ReactPress一个基于Next.js的博客和CMS系统,可查看demo站点。(@fecommunity投稿)ReactPress是一个开源的发布平台,它基于React构建,用户可以在支持React和MySQL数据库的服务器上设置自己的博客和......
  • [Whole Web] Vue design and React design
    VirtualDOMAdvantage:OneoftheadvantagesofthevirtualDOMiscross-platformrenderingabstraction.ThevirtualDOMcanconnecttodifferenthostenvironments,enablingoneframeworktorenderacrossmultipleplatforms.1.WhydidReactswitchfromt......
  • 基于vite创建的react18项目的单元测试
    题外话最近一个小伙伴进了字节外包,第一个活就是让他写一个单元测试。嗯,说实话,在今天之前我只知道一些理论,但是并没有实操过,于是我就试验了一下。通过查询资料,大拿们基本都说基于vite的项目,用vitest进行测试比较方便一写。闲话不多说,步入正题。1、下载依赖在vscode终端输......
  • uniapp自定义地址选择器组件
    exportconstregion=[{"id":110000,"text":"北京","value":"北京","children":[{"id":110100,......
  • 在Workbench中利用External Data组件施加随位置变化压力的操作方法与验证
    本文摘要(由AI生成):本文介绍了在ANSYSWorkbench中利用ExternalData组件在模型上施加随位置变化的压力载荷的方法,首先通过函数方式加载并进行计算,随后通过ExternalData导入外部数据进行加载,并与函数直接加载的结果进行比较。通过在Workbench的ProjectSchematic窗口添加一个Ex......
  • AntDesign - Vue Table组件 实现动态表格、表头分组的功能(方式一)
     一、功能分析产品经理要求企微主体名称是配置项且后期可修改或增加,各企微主体账号的数据一对应。前端开发设计方案为:静态列(左部分)在前端写,配置项由后端接口返回,再动态追加到columns中,根据表头dataIndex对应的数据项,填充到数据数组dataSource。至此,开发思路出来......
  • BY组态-低代码web可视化组件
     简介BY组态是集实时数据展示、动态交互等一体的全功能可视化平台。帮助物联网、工业互联网、电力能源、水利工程、智慧农业、智慧医疗、智慧城市等场景快速实现数字孪生、大屏可视化、Web组态、SCADA等解决方案。具有实时监控、多样、变化、动态交互、高效、可扩展、支持自......
  • 随机数(random)示例:LuatOS之4G模组开发的新思路
    今天我们要学习的是4G模组LuatOS开发的新思路,关于随机数(random)生成。我会以低功耗模组Air780E为例。一、随机数概述随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中......
  • 请举例说明动态操作DOM的方法有哪些?
    在前端开发中,动态操作DOM(文档对象模型)是JavaScript的核心功能之一。有很多方法可以实现,以下是一些常见示例,涵盖了创建、修改、删除和查找节点等操作:1.创建元素:document.createElement(tagName):创建一个指定标签名的HTML元素。例如,document.createElement('div')创建......