首页 > 其他分享 >React Hooks中父组件中调用子组件方法

React Hooks中父组件中调用子组件方法

时间:2023-09-25 11:23:30浏览次数:40  
标签:const useImperativeHandle Hooks ChildComp React changeVal 组件 ref

import {useState, useImperativeHandle,forwardRef} from 'react';

// props子组件中需要接受ref

let ChildComp = (props,ref) => {

    // 此处注意useImperativeHandle方法的的第一个参数是目标元素的ref引用

    useImperativeHandle(ref, () => ({

        // changeVal 就是暴露给父组件的方法

        changeVal: (newVal) => {

           

        }

    }));

    return (

        <div>{val}</div>

    )

}

ChildComp = forwardRef(ChildComp)

 

 

/* FComp 父组件 */

import {useRef} from 'react';

const FComp = () => {

    const childRef = useRef();

    const updateChildState = () => {

        // changeVal就是子组件暴露给父组件的方法

        childRef.current.changeVal(99);

    }

    return (

        <>

            <ChildComp ref={childRef} />

            <button onClick={updateChildState}>触发子组件方法</button>

        </>

    )

 

标签:const,useImperativeHandle,Hooks,ChildComp,React,changeVal,组件,ref
From: https://www.cnblogs.com/ranyonsue/p/17727515.html

相关文章

  • PySide2如何使加载耗时组件
    QTherad方式#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2023/9/2510:12#@Software:PyCharm__author__="JentZhang"fromPySide2.QtWidgetsimportQApplication,QWidget,QVBoxLayout,QPushButton,QLabelfromPySide2.QtCoreimportQThread......
  • 03_Bootstrap基础组件03
    7表单7.1基本实例设置了.form-control类的表单元素,默认设置宽度属性为width:100%;。将label元素和表单元素包裹在.form-group中可以按照排好的样式进行展示。<formaction="#"method="post"><divclass="form-group"><labelfor="email1">邮箱......
  • 02_Bootstrap基础组件02
    4排版使用Bootstrap的排版特性,您可以创建标题、段落、列表及其他内联元素,实际上它是把大部分在HTML的基本标签加了样式。所以这部分相对比较简单。4.1标题h1-h6重新定义样式,HTML中的所有标题标签,<h1>到<h6>均可使用。增加了.h1到.h6类,为的是给内联(inline)属性的文本赋......
  • 01_Bootstrap基础组件01
    1什么是Bootstrap?Bootstrap,来自Twitter,是目前很受欢迎的前端框架。Bootstrap是基于HTML、CSS、JavaScript的,它简洁灵活,使Web开发更加快捷。它对HTML、CSS和JavaScript进行了封装,使它们使用起来更方便。我们只需要使用它已经设定好的类,或规则,即可快速应用它提供的功能。......
  • 2023 年前端 UI 组件库概述,百花齐放!
    UI组件库提供了各种常见的UI元素,比如按钮、输入框、菜单等,只需要调用相应的组件并按照需求进行配置,就能够快速构建出一个功能完善的UI。虽然市面上有许多不同的UI组件库可供选择,但在2023年底也并没有出现一两个明确的解决方案能够适用于所有情况。因为不同的前端框架(例如React......
  • 竟然可以在一个项目中混用 Vue 和 React?
    React和Vue是前端开发中的两大热门框架,各自都有着强大的功能和丰富的生态系统。然而,你有没有想过,在一个项目中同时使用React和Vue?是的,你没有听错,可以在同一个项目中混用这两个框架!本文就来分享3个用于混合使用React和Vue的工具!#VeauryVeaury是一个基于React和Vue3的工......
  • 力扣-链表组件
    1.问题给定链表头结点head,该链表上的每个结点都有一个唯一的整型值。同时给定列表G,该列表是上述链表中整型值的一个子集。返回列表G中组件的个数,这里对组件的定义为:链表中一段极长连续结点的值(该值必须在列表G中)构成的集合。极长的含义是:这段连续结点的前面或后面结点不......
  • 父子组件如何互相调用接收值?
    父组件调用子组件子组件调用父组件<child:fatherFun="handleFatherFun"><child>子组件调用父组件的方法$emit()<div@click="childClick">点击调用父组件函数</div>childClick(){//子组件点击 this.$emit('fatherFun');//父组件的函数名}<child:father-fun=&q......
  • Hadoop是什么? Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并
    Hadoop是什么?Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并行处理任务,支持大规模数据存储和处理。Hadoop的核心组件包括分布式文件系统HDFS和分布式计算框架MapReduce,它们使得Hadoop可以在廉价的硬件上并行地处理大量数据。Hadoop还包括很多相关的项目和子......
  • 调用组件三部曲
    现有一个Footer的组件进行调用:<Footer></Footer>importFooterfrom'@/components/base/footer'components:{CereHeader,SiteNav,Footer}......