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
最终效果:
回复
1个回答

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
回复

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