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

父组件:

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

最终效果:

阅读 2k
1 个回答

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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题