首页 > 解决方案 > 如何同时允许类型 ref 回调和 MutableRefObject?

问题描述

我试图允许这两种类型(ref: any) => void Or MutableRefObject<any>

 interface RowProps extends React.HTMLAttributes<React.ReactHTML> {
    componentRef: (ref: any) => void | React.MutableRefObject<any>;
    //...
}

RowProps接口具有componentRef多种类型。

我希望允许这两种类型,但是:

    let refFuncVer = React.useRef(null);
    let refObjectVer = React.useRef(null);

    // It is okay
    componentRef={(ref) => {refFuncVer.current = ref;}}


    // type error:
    componentRef={refObjectVer}

为什么?

标签: reactjstypescript

解决方案


您忘记在函数类型定义周围加上括号:

componentRef: ((ref: any) => void) | React.MutableRefObject<any>;

TypeScript 编译器认为您的意思是:

componentRef: (ref: any) => (void | React.MutableRefObject<any>);

推荐阅读