React — forwardRef、useImperaiveHandle
forwardRef:获取子组件的DOM元素
React.forwardRef
是 React 提供的一个 API,用于在函数组件中向子组件传递 ref。通过使用 React.forwardRef
,我们可以将 ref 传递给函数组件内部的 DOM 节点或其他组件,从而实现对其进行操作。
import { forwardRef } from "react" const Son = forwardRef((prop,ref)=>{ return <input type="text" ref={ref}></input> }) const sonRef= useRef(null) const showRef = ()=>{ console.log(sonRef) sonRef.current.focus() } <div className="box"> <div> forwardRef </div> <div> <Son ref = {sonRef}></Son> <button onClick={()=>{ showRef() }}>foucus</button> </div> </div>
useInperaiveHandle:通过ref暴露子组件中的方法
useImperativeHandle
是 React 提供的一个自定义 Hook,用于在函数组件中暴露特定的实例值或函数给父组件。通常情况下,父组件无法直接访问子组件的实例,但通过 useImperativeHandle
,子组件可以选择性地暴露一些值或方法给父组件。
import { forwardRef ,useImperativeHandle,useRef} from "react" const Son = forwardRef((prop,ref)=>{ const inputref = useRef(null) const inputHandle = ()=>{ inputref.current.focus() } useImperativeHandle(ref,()=>{ return {inputHandle} }) return <input type="text" ref={inputref} ></input> }) const About= ()=>{ const sonRef = useRef(null) const sonFocus = ()=>{ // console.log(sonRef) sonRef.current.inputHandle() } return <> <div> <Son ref={sonRef}></Son> <button onClick={sonFocus}>focus</button> </div> </> } export default About
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!