export const PageViewTracker = ({ children }: ReactNode): ReactElement => {
usePageView();
return children;
};
问题:
此函数返回错误»类型为'ReactNode'的属性'children'不存在«
我的解决方案:
我尝试了几种类型,但是只有 any 有效,这不是我想要的。通常我将ReactNode用于儿童道具,并且效果很好。在这种情况下,TypeScript似乎有问题。
答案 0 :(得分: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;
}
因此,默认情况下,它接受类型为'ReactNode'的children
道具。