在react 当中Element 和 Component 有何区别?

Element(元素) 和 Component(组件)是 React 核心机制 里最容易混淆、但又非常重要的概念之一。

一句话总结

名称 定义 本质 由谁创建 举例
React Element React 用来描述 UI 的最小单元 一个普通的 JavaScript 对象 React.createElement() <div />, <MyButton />
React Component 用户自定义的组件类型 一个 函数或类 开发者定义 function MyButton() { ... }

举个通俗例子

假设你写了这样一段代码:
function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

const element = <Welcome name="Sara" />;

这段里:

  • Welcome —— 是一个 Component(组件)。

  • <Welcome name="Sara" /> —— 是一个 Element(元素)。

它们在底层的区别

1. React Element

React Element 是一个简单的 描述 UI 的对象,React 通过它来决定要渲染什么。
比如上面的例子:

const element = <h1 className="greet">Hello</h1>;

编译后等价于:

const element = React.createElement("h1", { className: "greet" }, "Hello");

也就是一个普通的 JS 对象:

{
  type: 'h1',
  props: { className: 'greet', children: 'Hello' }
}

React 最后会根据这个对象去创建 DOM 节点。

2. React Component

React Component 是一种 可以返回 React Element 的函数或类:

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

你可以这样用:

<Welcome name="Sara" />

React 内部其实会做:

React.createElement(Welcome, { name: "Sara" });

然后执行 Welcome(props),返回一个 React Element(比如 <h1>Hello, Sara</h1>)。

小结对比表

特性 React Element React Component
是什么 UI 的描述对象 生成 UI 的函数/类
类型 JavaScript 对象 函数 或 类
作用 告诉 React 渲染什么 定义 UI 逻辑和行为
创建方式 React.createElement() function / class
能否包含状态 ❌ 不能 ✅ 可以(class 或 useState)
能否复用逻辑 ❌ 不行 ✅ 可以(Hooks, props)

总结一句话记忆

Element 是结果,Component 是产生结果的工厂。

也就是说:

  • Component 负责“生产”。

  • Element 是生产出来的“货物”。

posted @ 2025-10-16 15:52  煜火  阅读(5)  评论(0)    收藏  举报