帮同事debug发现的问题,记录一下,
弗曼学习大法好
interface RefFunType {
hdlUpdate(): void,
name: string
}
父组件使用useRef
useRef<RefFunType>()
传入的泛型是子组件存放在ref.current中的数据格式,
(如果子组件内部绑定了自己的ref,那用的泛型为useRef
ref是绑定在自定义组件上,子组件直接从props中获取ref是获取不到的,
这是因为ref不是prop属性,会像key一样,被React进行特殊处理
所以需要使用
React.forwardRef((props: any, React.Ref<unknown> | undefined) => {...})
将ref再重新转发到子组件中
在子组件中使用useImperativeHandle
useImperativeHandle(ref, () => ({
[key:string]: any
}));
第一个param为转发的ref,第二个参数为一个fun,返回一个对象,这个对象就是可以在父组件中通过ref.current?.XXX获取到的方法和数据
在父组件中