Component父组件与hook子组件在antd Form中的时候,使用ref获取参数

Posted 前端菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Component父组件与hook子组件在antd Form中的时候,使用ref获取参数相关的知识,希望对你有一定的参考价值。

前情:我需要在Component中获取hook中某个参数的值,而hook被Form包了一层,此时我没有办法简单地通过ref获取hook中的参数。

开发过程当中查了很久最终解决了,记录一下方便以后查阅。
本文记录Component为父组件,hook为子组件的情况。

我的习惯是一个组件放一个文件。

父组件ParentCom.jsx:

import ChildHook from \'./ChildHook.jsx\';
export default class ParentCom extends React.Component{
    constructor(){
        super();
        this._subRef = React.createRef();
    }
    
    _onClick=()=>{
        console.log(this._subRef.status);
    }

    render(){
        <ChildHook wrappedComponentRef={(ref)=this._subRef = ref} />
        <input onClick={this._onClick} />
    };
}

子组件ChildHook.jsx

const SubHook = (props)=>{
    let statusRef = React.useRef(true);

    // 在hook中使用ref需要fowardRef、useImperativeHandle配合。
    useImperativeHandle(props.refInstance, ()=({
        status: statusRef.current
    }));
}

const SubHookForwardRef = fowardRef((props, ref)=>(
    <SubHook {...props} refInstance={ref} />
));

export default Form.create()(SubHookForwardRef);

以上是关于Component父组件与hook子组件在antd Form中的时候,使用ref获取参数的主要内容,如果未能解决你的问题,请参考以下文章

定制修改组件库的几种方式

React Hooks中父组件中调用子组件方法

React Hook父组件获取子组件的数据/函数

注入与子组件同类型的父组件

[antd of vue] a-tree组件子节点不完全勾选获取父节点的值

React Hook - 无法在子组件 onComplete 回调中调用父组件调度