【发布时间】:2020-04-22 10:55:47
【问题描述】:
在这个 MainHeader 组件中:
<MainHeader
LeftButton={
previous ? (
<BackButton
onPress={() => {
navigation.goBack;
}}
/>
) : (
undefined
)
}
...
/>
BackButton 是一个 JSX 元素,通过 LeftButton 属性向下传递到 MainHeader,并显式键入为 const BackButton: React.FC<BackButtonProps>,所以我希望 LeftButton 属性的类型如下:
interface MainHeaderProps {
LeftButton: React.FC<any> | undefined;
...
}
但在尝试分配 BackButton | 时出现此错误未定义到 LeftButton 道具:Type 'Element | undefined' is not assignable to type 'FC<any> | undefined'. ...所以我将类型更改为
interface MainHeaderProps {
LeftButton: JSX.Element | undefined;
...
}
错误消失。但是现在当我尝试在 MainHeader 中使用 <LeftButton /> 时出现错误:JSX element type 'LeftButton' does not have any construct or call signatures. 所以在阅读了一些内容之后,我对应该使用什么类型更加困惑......我尝试了来自 @types/react 的许多不同类型像 ComponentType 一样尝试通过其构造函数定义 LeftButton,但 TypeScript 强制将 LeftButton 键入为 JSX.Element,所以我不确定如何最好地解决这个问题。
【问题讨论】:
标签: reactjs typescript react-native