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

为何React官方推荐使用组件组合作为Context的替代方案?

组件组合替代Context的核心逻辑

你觉得组件组合还是在做props drilling,其实是没get到它和数据透传的本质区别:

  • 组件组合传递的是已经组装好的UI/渲染逻辑,不是原始数据。就像文档示例里的userLink,它已经把user和avatarSize这些数据处理成了可直接渲染的组件,深层组件根本不需要关心数据细节,只负责把这个组件渲染出来就行。
  • 传统props drilling是为了让深层组件拿到数据,不得不一层一层透传;而组件组合是把数据的处理逻辑上移到上层组件,深层组件完全脱离对数据的依赖,职责更单一。

举个直观的对比:

传统props drilling写法

<App user={user} avatarSize={size}>
  <Layout user={user} avatarSize={size}>
    <Navigation user={user} avatarSize={size}>
      <UserAvatar user={user} size={avatarSize} />
    </Navigation>
  </Layout>
</App>

这里每一层组件都得接收并传递user和avatarSize,哪怕它们自己根本用不上这些数据。

组件组合写法

// 上层组件提前组装好UI
const userLink = <UserAvatar user={user} size={avatarSize} />;

// 往下传递的是组装好的组件
<App>
  <Layout>
    <Navigation>
      {userLink}
    </Navigation>
  </Layout>
</App>

这时Layout和Navigation完全不需要知道user或avatarSize的存在,只需要渲染传入的内容就行,彻底摆脱了无意义的数据透传。

文档推荐组件组合,是因为它比Context更轻量、更可控:Context是全局共享状态,一旦更新所有消费组件都会重渲染;而组件组合是显式传递,只有接收组件会感知变化,而且上层组件能直接控制最终渲染的UI,避免深层组件过度依赖全局状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:10:02