理解“在react 中,一切都是组件”这句话

这句话 “在 React 中,一切都是组件” 是理解 React 的核心思想之一。

一句话总结

React 的页面不是由“页面”、“模块”、“按钮”等概念组成的,而是由一个一个“组件”构成的。所有结构都统一用组件来描述。

为什么叫“一切都是组件”?

在 React 世界里:

  • 页面是组件

  • 模块是组件

  • 栏目是组件

  • 按钮是组件

  • 表单项是组件

  • 弹窗是组件

  • 图标甚至一段文本都可以是组件

也就是说,你看到的 任何 UI 单元都可以被封装成一个独立的组件,并且像积木一样组合起来。

举个例子

传统 HTML:

<button>提交</button>

在 React 中你完全可以认为这是一个组件:

function SubmitButton() {
  return <button>提交</button>
}

然后你可以像使用标签一样复用:

<SubmitButton />
<SubmitButton />

React 的核心:UI = 组件树

React 会把页面渲染成一个组件树(component tree):

App
 ├── Header
 ├── Sidebar
 ├── UserForm
 │    ├── Input
 │    ├── Input
 │    └── SubmitButton
 └── Footer

你写的每个 jsx 标签其实都是一个组件(原生 DOM 标签也是 React 内置的组件)。

组件的本质

组件本质上是:

  • 接收输入 (props)
  • 管理自身状态 (state)
  • 返回 UI 描述 (jsx)

也就是说,React 统一了所有构建 UI 的方式,让每个模块都有:

  • 结构

  • 样式

  • 行为

  • 状态

并且是独立可复用的单元。

为什么要“一切组件化”?

好处 1:提高复用性

一个按钮,一个对话框,一个表格单元格都可以组件化 → 到处可复用。

好处 2:提高可维护性

每个组件有自己的逻辑,互不影响 → 模块清晰。

好处 3:状态更清晰

每个组件自己维护自己的 state,不会乱。

好处 4:降低复杂度

把页面拆成小组件 → 复杂页面就变得简单。

举个最容易理解的例子

你写一个电商的 SKU 属性选择:

传统写法:HTML + jQuery
React 写法:都是组件

ProductPage
 ├── ImageGallery
 ├── Title
 ├── Price
 ├── SkuSelector
 │    ├── SkuAttribute
 │    │    ├── SkuOption
 │    │    ├── SkuOption
 │    │    └── ...
 │    └── ...
 └── AddToCartButton

每块完全可以拆成组件。

终极总结

在 React 中,整个应用是由组件树构成的。
React 把 UI 抽象成可组合、可复用、可管理状态的组件。
组件是 React 的最小单位,因此我们说“在 React 中,一切都是组件”。

posted @ 2025-11-18 09:10  煜火  阅读(12)  评论(0)    收藏  举报