reactjs - React 组件和 ReactElement 之间有什么关系?

标签 reactjs react-dom virtual-dom

我正在读一篇section of the React docs它使用以下词汇,但我无法弄清楚它们之间的关系:

  • 一个组件
  • 组件的实例
  • 组件的支持实例
  • 虚拟 DOM 元素
  • 一个ReactElement

它们是否相关以及如何相关?

最佳答案

虚拟 dom 元素是 javascript 对象,它代表 DOM 节点,以提供更好的重新渲染/比较/创建支持,而不是在每次状态更改时更新 DOM。

ReactElement 是一个简单的 JavaScript 对象,代表 UI 的视觉部分。可以是 html 元素或其他 React 组件。 该 javascript 对象将与一个或多个虚拟 DOM 元素相关联。这是为了性能。

组件

根据文档,它是

specification object that contains a render method

我要补充的是:

for creating , combining and wrapping ReactElements with behaviour.

行为可以是以下:

  • 绑定(bind)数据
  • 函数可以绑定(bind)到 DOM 事件
  • 组件的扩展/继承支持
  • React 的生命周期支持
  • JavaScript 流程控制(隐藏/显示多个组件)

组件实例显然可以被认为与对象定义和对象实例相同。

定义是用于创建已定义对象的蓝图。

例如,如果您有一个包含多个 ListElement 的列表。

  • 列表:保存杂货元素

    • ListItem:亲爱的
    • ListItem:牛奶
    • ListItem: Cereal
    • ListItem:水果

一个列表定义-->一个实例。

一个 ListElement 定义-->该组件的多个实例

组件的支持实例是实际渲染的元素。

注意:当我说绑定(bind)/绑定(bind)时,我指的是单向意义上的。

关于reactjs - React 组件和 ReactElement 之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743203/

相关文章:

reactjs - 在 react 中使用 useState 钩子(Hook)时设置后立即读取组件状态

reactjs - 为 React Native SectionList 的每个部分渲染不同的组件

reactjs - 'HTMLElement | null' 类型的参数不能分配给 'Element' 类型的参数。类型 'null' 不可分配给类型 'Element' .ts(2345)

javascript - 如何使用 React.js 用类包围每个 X 元素

javascript - 重新排序 DOM 节点时的 HyperHTML 性能

reactjs - Material-UI Swipeable Drawer 翻译不流畅

javascript - 无法读取未定义的属性,如何避免崩溃?

javascript - 如何从外部访问 React 组件中使用的第三方 DOM 库中的对象属性

javascript - react 点击事件冒泡 "sideways",而不仅仅是 "up"

javascript - React.js - 如何在子组件中实现一个函数,以从同一父组件中卸载另一个子组件,并在其所在位置安装另一个组件?