这是代码示例,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]
我应该在这里找到什么类型?
答案 0 :(得分:1)
React“可渲染”不是React.ComponentClass
而是React.ReactNode
。
在您的React.ReactNode
道具中询问Cpnt
。
答案 1 :(得分:0)
您传递的<Header title='header' />
是React元素,而不是Header
是组件类。