TypeScript:在React中传递props中的组件时如何定义类型?

时间:2019-02-20 09:29:42

标签: reactjs typescript

这是代码示例,JS版本正常运行。

我在TS中遇到的问题:

import React from 'react'

class Parent extends React.Component {
    render() {
      return (
        <Child Cpnt={<Header title='Header' />} />
        /* TS error on Cpnt */
      )
    }
  }

interface ChildProps {
    Cpnt: React.ComponentClass
}

class Child extends React.Component <ChildProps> {
    render () {
        const { Cpnt } = this.props
        return (
            <div>
                {{Cpnt}}
            </div>
        )
    }
}

interface HeaderProps {
    title: string
}

class Header extends React.Component <HeaderProps> {
    render () {
        const { title } = this.props
        return (
            <p>{title}</p>
        )
    }
}

我在<Child Cpnt上遇到了错误

[ts]
Type 'Element' is not assignable to type 'ComponentClass<{}, any>'.
  Type 'Element' provides no match for the signature 'new (props: {}, context?: any): Component<{}, any, any>'. [2322]

我应该在这里找到什么类型?

2 个答案:

答案 0 :(得分:1)

React“可渲染”不是React.ComponentClass而是React.ReactNode

在您的React.ReactNode道具中询问Cpnt

答案 1 :(得分:0)

您传递的<Header title='header' />是React元素,而不是Header是组件类。