react中使用forwardRef获取子组件中的节点以及子组件的方法(useImperativeHandle的使用)

1.forwardRef的使用

javascript 复制代码
import { forwardRef, useRef } from "react"


const Son = forwardRef((props, ref)=> {
    return (
        <input type="text" ref={ref} id="kannoId"/>
    )
})

function ForwardRef() {
    const sonRef = useRef(null)
    const showRef = () => {
        console.log("sonRef", sonRef.current,document.getElementById('kannoId'));
        sonRef.current.focus()
        // document.getElementById('kannoId').focus()
    }
    return (
        <div>
            我是父组件
            <button onClick={showRef}>点击</button>
            <Son ref={sonRef} />
        </div>
    )
}

export default ForwardRef

说明:获取子组件中的节点可以通过子传父、js获取节点方式、forwardRef

2.useImperativeHandle的使用

javascript 复制代码
import { forwardRef, useRef,useImperativeHandle } from "react"


const Son = forwardRef((props, ref)=> {
    function kanno(){
        console.log("36除了6还是6");
    }
    useImperativeHandle(ref,()=>{ // 使用钩子函数暴露子组件中的方法
        return {
            kanno
        }
    })
    return (
        <input type="text" id="kannoId"/>
    )
})

function ForwardRef() {
    const sonRef = useRef(null)
    const showRef = () => {
        console.log("sonRef", sonRef.current,document.getElementById('kannoId'));
        sonRef.current.kanno()
        // sonRef.current.focus()
        // document.getElementById('kannoId').focus()
    }
    return (
        <div>
            我是父组件
            <button onClick={showRef}>点击</button>
            <Son ref={sonRef} />
        </div>
    )
}

export default ForwardRef
相关推荐
灼灼桃花夭7 小时前
js之阳历 → 农历(含时辰)转换函数
开发语言·前端·javascript
gyx_这个杀手不太冷静7 小时前
大人工智能时代下前端界面全新开发模式的思考(三)
前端·架构·ai编程
小李子呢02117 小时前
前端八股性能优化(1)---防抖和节流
开发语言·前端·javascript
IT_陈寒8 小时前
Python多进程共享变量那个坑,我差点没爬出来
前端·人工智能·后端
ayqy贾杰8 小时前
Claude Code 重构,并行化或终结 IDE 时代
前端·javascript·面试
tanis_38 小时前
MinerU JS/TS SDK 深度指南:JavaScript/TypeScript 开发者的 PDF/文档解析利器
javascript
SuperChe9 小时前
用AI Native的方式优化前端性能
前端·算法
陈广亮9 小时前
工具指南24-在线CSS Box Shadow生成器
前端
颜酱9 小时前
智能体与工作流:从「想做一个应用」到「能跑通一条链」
前端·javascript·人工智能
前端 贾公子9 小时前
Tailwind CSS OKLCH 颜色与所有浏览器兼容
前端