react Hooks 父组件调用子组件函数、获取子组件属性

embedded/2025/1/16 4:33:42/

子组件

import { forwardRef, useImperativeHandle } from 'react'// 定义子组件的 ref 类型
export interface ChildRef {childMethod: () => voidchildValue: string
}const Child = forwardRef<ChildRef>((props, ref) => {// 暴露给父组件的方法和属性useImperativeHandle(ref, () => ({childMethod: () => {console.log('子组件方法被调用')},childValue: 'child value'}))return <div>子组件</div>
})export default Child

父组件

import { useRef } from 'react'
import Child, { type ChildRef } from './Child'const Parent = () => {const childRef = useRef<ChildRef>(null)const handleClick = () => {// 调用子组件方法childRef.current?.childMethod()// 访问子组件属性console.log(childRef.current?.childValue)}return (<div><Child ref={childRef} /><button onClick={handleClick}>调用子组件方法</button></div>)
}

获取使用使用 Context(适用于多层级组件通信

context.tsimport { createContext } from 'react'interface ContextType {parentMethod: () => voidparentValue: string
}export const MyContext = createContext<ContextType>({parentMethod: () => {},parentValue: ''
})Parent.tsxconst Parent = () => {const contextValue = {parentMethod: () => {console.log('父组件方法被调用')},parentValue: 'parent value'}return (<MyContext.Provider value={contextValue}><Child /></MyContext.Provider>)
}Child.tsximport { useContext } from 'react'
import { MyContext } from './context'const Child = () => {const { parentMethod, parentValue } = useContext(MyContext)return (<div><button onClick={parentMethod}>调用父组件方法</button><div>父组件值: {parentValue}</div></div>)
}

http://www.ppmy.cn/embedded/154304.html

相关文章

2024年开发语言热度排名

随着技术的不断发展和变化&#xff0c;编程语言的热度也在不断演变。2024年即将到来&#xff0c;我们有必要回顾和展望当前和未来的开发语言市场。本文将基于多个因素&#xff0c;包括行业需求、社区支持、流行度以及新兴趋势&#xff0c;对2024年的开发语言热度进行排名和分析…

Windows下安装和配置Go开发环境

文章目录 1. 介绍了SDK2. 下载 SDK工具包3. windows 下配置 Golang 环境变量 1. 介绍了SDK SDK 的全称(Software Development Kit 软件开发工具包)SDK是提供给开发人员使用的&#xff0c;其中包含了对应开发语言的工具包 2. 下载 SDK工具包 Go语言的官网为&#xff1a;https…

Nginx 配置支持 HTTPS 代理

个人博客地址&#xff1a;Nginx 配置支持 HTTPS 代理 | 一张假钞的真实世界 本文描述的是Nginx HTTPS反向代理的情况&#xff08;即后端服务是HTTP的&#xff09;。 使用openssl配置ssl证书 生成服务器端的私钥&#xff08;key 文件&#xff09;&#xff1a; # openssl gen…

分布式缓存redis

分布式缓存redis 1 redis单机&#xff08;单节点&#xff09;部署缺点 &#xff08;1&#xff09;数据丢失问题&#xff1a;redis是内存存储&#xff0c;服务重启可能会丢失数据 &#xff08;2&#xff09;并发能力问题&#xff1a;redis单节点&#xff08;单机&#xff09;部…

70_Redis数据结构-RedisObject

1.RedisObject介绍 在Redis中,所有数据类型的键和值均会被封装成一个称为Redis对象(RedisObject)的结构。什么是RedisObject呢?RedisObject(或简称robj)是Redis内部用于统一表示不同类型值的一个通用数据结构。 从Redis使用者的视角来看,一个Redis节点可以包含多个数据…

12 USART串口通讯

1 串口物理层 两个设备的“DB9接口”之间通过串口信号建立连接&#xff0c;串口信号线中使用“RS232标准”传输数据信号。由于RS232电平标准的信号不能直接被控制器直接识别&#xff0c;所以这些信号会经过“电平转换芯片”转换成控制器能识别的“TTL校准”的电平信号&#xff…

Transmon

Transmon 是一种超导量子比特&#xff0c;由耶鲁大学的研究人员在2007年提出。它是基于约瑟夫森结的量子比特的改进版本&#xff0c;旨在提高量子比特的相干时间。Transmon 的设计和原理涉及多个物理学领域的知识&#xff0c;包括量子电动力学&#xff08;QED&#xff09;。以下…

python识别图片中指定颜色的图案并保存为图片

示例代码&#xff1a; def chuli(color):import cv2import numpy as np# 定义颜色名称到HSV阈值范围的映射color_thresholds {red: ([0, 100, 100], [10, 255, 255], [160, 100, 100], [180, 255, 255]),yellow: ([20, 100, 100], [30, 255, 255]),blue: ([90, 100, 100], [1…