官方 ReactJs 文档建议按照点符号创建组件,如React-bootstrap库:
<Card>
<Card.Body>
<Card.Title>Card Title</Card.Title>
<Card.Text>
Some quick example text to build on the card title and make up the bulk of
the card's content.
</Card.Text>
</Card.Body>
</Card>
感谢这个问题,我知道我可以使用功能组件来创建这个结构,就像在 javascript 中一样:
const Card = ({ children }) => <>{children}</>
const Body = () => <>Body</>
Card.Body = Body
export default Card
我决定使用 TypeScript 添加相应的类型:
const Card: React.FunctionComponent = ({ children }): JSX.Element => <>{children}</>
const Body: React.FunctionComponent = (): JSX.Element => <>Body</>
Card.Body = Body // <- Error: Property 'Body' does not exist on type 'FunctionComponent<{}>'
export default Card
现在的问题是 TypeScript 不允许分配Card.Body = Body
并给我错误:
类型“FunctionComponent<{}>”上不存在属性“Body”
那么我怎样才能正确地输入这个以使用这个代码结构呢?