正如标题所述,我找不到正确的类型。我已经检查了DevTools和我正在以编程方式查看的每个组件都有Component.type.displayName
。type
表示任何不是ElementType
的东西都是一个函数。
该节点的类型是React.isValidElement的返回类型,如Parameters<typeof React.isValidElement>
所示,因为我不能确定它是什么。
问题部分:
const node = SomeThingUnknown as Parameters<typeof React.isValidElement>;
const type = ((node as unknown) as React.ReactElement<React.FunctionComponent>).type;
const displayName = typeof type === "function" ? type.displayName || type.name || "Unknown" : type;
最后一行取自Reactrepo。所以我知道它是有效的。
node
在VS代码中为:
const type: string | ((props: any) => React.ReactElement<any, string | ... | (new (props: any) =>
React.Component<any, any, any>)> | null) | (new (props: any) => React.Component<any, any, any>)
悬停在displayName
上时的错误为:
Property 'displayName' does not exist on type 'JSXElementConstructor<any>'.
Property 'displayName' does not exist on type '(props: any) =>
ReactElement<any, string | ... | (new (props: any) => Component<any, any, any>)> | null'.
3条答案
按热度按时间ia2d9nvy1#
您可以使用以下内容:
ojsjcaue2#
我想我解决了:
那就叫:
idfiyjo83#
尝试使用
Component.type.name
而不是Component.type.displayName