TypeScript 错误:“ReactNode”类型上不存在属性“children”

IT技术 reactjs typescript
2021-05-22 14:51:52
export const PageViewTracker = ({ children }: ReactNode): ReactElement => {

    usePageView();

    return children;
};

问题:

此函数返回错误»属性“children”不存在于类型“ReactNode” «

我的解决方法:

我尝试了几种类型,但只有任何不是我想要的作品。通常我将 ReactNode 用于儿童props,并且效果很好。在这种情况下,TypeScript 似乎有问题。

1个回答

您收到该错误的原因是您将“ReactNode”接口提供给对象 ( {}: Type)。children本身属于 ReactNode 类型:

type PropsWithChildren<P> = P & { children?: ReactNode };

您应该为您的 PageViewTracker 提供FunctionComponent(或其别名FC)类型。

export const PageViewTracker: React.FC = ({ children }) => {
   ...
}

它具有以下界面:

interface FunctionComponent<P = {}> {
    (props: PropsWithChildren<P>, context?: any): ReactElement | null;
    propTypes?: WeakValidationMap<P>;
    contextTypes?: ValidationMap<any>;
    defaultProps?: Partial<P>;
    displayName?: string;
}

所以默认情况下它接受children类型为“ReactNode”props。