reactjs - 类型 'Element | undefined' 不可分配给类型 'FC<any> | undefined'

标签 reactjs typescript react-native

在这个 MainHeader 组件中:

<MainHeader
  LeftButton={
    previous ? (
      <BackButton
        onPress={() => {
          navigation.goBack;
        }}
      />
    ) : (
      undefined
    )
  }
  ...
/>

BackButton 是一个 JSX 元素,通过 LeftButton 属性向下传递到 MainHeader,并显式输入为 const BackButton: React.FC<BackButtonProps> ,那么我希望 LeftButton Prop 的输入方式如下:

interface MainHeaderProps {
  LeftButton: React.FC<any> | undefined;
  ...
}

但是我在尝试分配 BackButton 时遇到此错误 |未定义 LeftButton Prop :Type 'Element | undefined' is not assignable to type 'FC<any> | undefined'. ...所以我将类型更改为

interface MainHeaderProps {
  LeftButton: JSX.Element | undefined;
  ...
}

错误消失了。但是现在当我尝试使用 <LeftButton /> 时出现错误在 MainHeader 中:JSX element type 'LeftButton' does not have any construct or call signatures.因此,在阅读了一些内容之后,我对应该使用哪种类型感到更加困惑……我尝试了 @types/react 中的许多不同类型就像 ComponentType 尝试通过其构造函数定义 LeftButton,但 TypeScript 强制将 LeftButton 键入为 JSX.Element,所以我不确定如何最好地解决这个问题。

最佳答案

React.FC<any>是功能组件的类型。返回呈现的 JSX 的函数。

JSX.Element是已渲染的功能组件的返回值类型。

所以你可以使用JSX.Element ,像您已经做的那样传入您的组件,然后简单地显示它,因为您已经传入 Prop 并渲染它。

<div>{props.LeftButton}</div>

关于reactjs - 类型 'Element | undefined' 不可分配给类型 'FC<any> | undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59585988/

相关文章:

react-native - react-native 可以在没有节点的情况下与 Java 和 Tomcat 一起使用吗?

reactjs - 刷新页面时Cloudfront返回403禁止

ruby-on-rails - 如何解析rails中的JSON字符串参数

javascript - Angular 2 智能表动态数据不加载

ios - 通过推送通知检测是否打开了 React Native iOS 应用程序

react-native - Jest 未能测试导入 FontAwesomeIcon 的组件

javascript - React owl 轮播是空白的

javascript - 如何在标题中按下 goBack 图标时重新渲染组件

html - 移动应用程序中的谷歌地图和导航

javascript - 如何在不丢失 TypeScript 类属性的情况下将 JSON 对象列表转换为 TypeScript 对象列表?