Logo
Section 1 / 9

什么是复合组件?

在 React 中,复合组件是由两个或更多独立组件组合而成的组件。

检查点

什么是复合组件?

在 React 中,复合组件是由两个或更多独立组件组合而成的组件。

介绍

我们将要讨论的第一个模式叫做 复合组件 模式。我知道这个名字听起来有点高大上,但我来一步步解释清楚。

这个模式名称中的关键词是“复合”(Compound)。

从字面上看,“复合”指的是由两个或更多独立部分组成的整体。

在 React 组件的语境下,这可以理解为一个组件由两个或更多独立的组件组合而成。

但这还远远不够。

实际上,任何 React 组件都可以由两个或更多组件构成。所以,仅仅这样描述并不能准确体现复合组件的本质。

真正的复合组件更进一步:组成主组件的各个独立子组件,必须依赖于父组件才能使用。

主组件通常被称为 父组件,而这些被组合进来的独立组件则称为 子组件。

示例:select

一个经典的例子是 HTML 的 select 元素。

1<select> 2 <option value="value0">key0</option> 3 <option value="value1">key1</option> 4 <option value="value2">key2</option> 5</select>

在这里,select 是父组件,option 是子组件。

这种结构就像一个复合组件:单独使用 <option>key0</option> 没有意义,必须包裹在 select 标签内才有效。同时,select 的整体行为也依赖于这些 option 子元素的存在。因此,它们之间是紧密关联的。

整个组件的状态由 select 管理,所有子组件都依赖于这个状态。

现在你是否对复合组件有了清晰的理解?

值得一提的是,复合组件只是表达组件 API 的多种方式之一。

例如,虽然效果差一些,select 也可以设计成这样:

1<select options="key:value;anotherKey:anotherValue"></select>

这种方式显然不是好的设计,因为它几乎无法向子组件传递属性。

快速小测验!

Quiz

单选题

什么是复合组件?

1 / 2

简介

示例:构建一个可扩展组件