美文网首页React
React.forwardRef和connect的联合使用问题

React.forwardRef和connect的联合使用问题

作者: 巫路赛 | 来源:发表于2020-09-02 00:38 被阅读0次
    先使用 React.forwardRef;再使用 connect 包一层会使 ref 属性漏掉,导致 内部实例无法传到外部;
    比如下面这样
    let Component = React.forwardRef((props,ref)=>{
        const [form] = Form.useForm();
        useImperativeHandle(ref,()=>({
            submit:()=>{
              form.submit();
            }
        }));
        return (
            <></>
        )
    });
    export default connect(xxx,xxx)(Component);
    

    正确的操作方式要调整高阶组件的顺序,先用connect包裹,然后再用React.forwardRef包裹。

    代码如下

    let Component = (props)=>{
        const {refInstance} = props;
        //  只要是实例都行useForm和useRef创建的都可以
        const [form] = Form.useForm();
        useImperativeHandle(refInstance,()=>({
           submit:()=>{
              form.submit();
           }
        }));
        return (
           <>xxx</>
        )
    };
    Component = connect(xxx, xxx)(Component);
    //注意:这里不要在Component上使用ref;换个属性名字比如refInstance;不然会导致覆盖
    export default React.forwardRef( (props,ref) => <Component  {...props}  refInstance={ref} />);
    

    这样就可以同时使用2个高阶组件了。

    相关文章

      网友评论

        本文标题:React.forwardRef和connect的联合使用问题

        本文链接:https://www.haomeiwen.com/subject/eqxisktx.html