You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React子组件中如何为传入的组件类型Props指定类型?

React TypeScript 中组件类型 props 的正确定义方式

方案1:使用 React.ReactNode(最常用)

如果你的 props 是已经渲染好的 JSX 元素(就像你示例里的 <Header/>),直接用 React.ReactNode 类型即可,它涵盖了所有能在 JSX 中渲染的内容(元素、字符串、数字、null/undefined 等),完全匹配你的场景。

修改后的 Layout 组件代码:

import React from 'react';

export default function Layout({ header, body }: { 
  header?: React.ReactNode; 
  body?: React.ReactNode 
}) {
  return (
    <div className="layout">
      {header}
      {body}
    </div>
  );
}

这里的 ? 表示这两个 props 是可选的,对应你在 App.tsx 里只传入 header 的情况。

方案2:使用 React.ComponentType(接收组件本身)

如果你的需求是接收未渲染的组件,后续在 Layout 内部自行渲染并传递 props,就用 React.ComponentType,它兼容函数组件和类组件:

修改后的 Layout 组件代码:

import React from 'react';

export default function Layout({ Header, Body }: { 
  Header?: React.ComponentType; 
  Body?: React.ComponentType 
}) {
  return (
    <div className="layout">
      {Header && <Header />}
      {Body && <Body />}
    </div>
  );
}

此时 App.tsx 的调用方式要改成传递组件本身:

<Layout Header={Header} />

内容的提问来源于stack exchange,提问作者sikarak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:18:20