随笔 - 156  文章 - 0  评论 - 3  阅读 - 10万

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
复制代码

 

posted on   萬事順意  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示