React 中 Element 和 Component

文章类型:React

发布者:hp

发布时间:2025-03-22

一:类别

(1)Element(元素)

1:定义:

React Element 是一个普通的 JavaScript 对象,用来描述你想要在屏幕上看到的内容

2:属性:

type:可以是字符串(如 'div')或 React 组件(如 MyComponent)

props:传入的属性对象

key:用于标识元素的唯一值

ref:用于访问元素的引用

(2)Component(组件)

1:定义:

Component 是一个可复用的代码块,它可以是一个函数或类,接收一些输入(称为 props)并返回一个 React Element

2:特点:

可以包含状态(state)和生命周期方法

可以处理用户交互和业务逻辑

可以组合其他组件来构建复杂的 UI

二:区别

(1)创建方式上

Element

// 使用 JSX
const element = <h1>Hello, World</h1>;

// 使用 createElement
const element = React.createElement('h1', null, 'Hello, World');

Component

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

// 类组件
class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

(2)使用场景上

Element=>它是一个不可变对象,描述界面的一个快照,一旦创建就不能修改

Component =>接收输入并可以维护内部状态,可以响应生命周期事件,可以处理用户交互

(3)渲染过程上

Element:

React 会直接将 Element 转换为 DOM 节点

Element 是静态的,每次更新都会创建新的 Element

Component :

React 会调用组件(函数调用或实例化类)

组件返回的 Element 树会被 React 进一步处理

组件可以多次渲染并产生不同的 Element

三:底层实现

1:Element=>转换为 React.createElement() 调用,返回轻量级对象‌

2:Component‌=>编译为函数或类,最终通过调用生成 Element 树‌

四:应用场景

1:Element=>静态内容描述、一次性渲染的简单 UI

2:Component‌=>动态交互逻辑、可复用 UI 模块、状态管理

五:总结

1:‌Element 是 Component 的产出物‌:Component 通过 render 方法生成 Element 树,最终由 React DOM 渲染为真实 DOM‌

2:‌性能影响‌:频繁生成新 Element 可能引发不必要的渲染,而合理设计 Component 结构可优化性能‌

:3:开发模式‌:Element 关注“UI 是什么”,Component 关注“UI 如何构建与交互”‌