react hooks 父组件调用子组件实例,拿不到实例对象?

作者站长头像
站长
· 阅读数 10

父组件:

import React, { useRef } from "react";
import Children from "./children";

const Test: React.FC = () => {

    const children = useRef()
    
    return (
    <div>
        <Children ref={children}/>
        <button onClick={() => console.log(children)} > test </button>
    </div>)
}

export default Test

子组件:

import React, { useImperativeHandle } from "react";

const Children: React.FC<{ ref: any }> = ({ ref }) => {

    useImperativeHandle(ref, () => ({
        getVal: () => {
          return '返回数据';
        }
      }))
      
    return <div>Children</div>
}

export default Children

最终效果:react hooks 父组件调用子组件实例,拿不到实例对象?react hooks 父组件调用子组件实例,拿不到实例对象?

回复
1个回答
avatar
test
2024-07-13

react中函数式组件没有实例,无法直接使用ref,所以要使用forwardRef:

import React, { useImperativeHandle,forwardRef } from "react";

const Children = forwardRef((props, ref) => {
    useImperativeHandle(ref, () => ({
        getVal: () => {
            return '返回数据';
        }
    }))

    return <div>Children</div>
})

export default Children
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容