Reactjs 什么';React组件和React元素之间的关系是什么?

Reactjs 什么';React组件和React元素之间的关系是什么?,reactjs,react-dom,virtual-dom,Reactjs,React Dom,Virtual Dom,我正在读一本使用以下词汇表的书,但我无法理解它们之间的关系: 组件 组件的实例 组件的支持实例 虚拟DOM元素 Areactive元素 它们是否相关以及如何相关?虚拟dom元素是表示dom节点的javascript对象,用于更好地重新排序/差异化/创建支持,而不是在每次状态更改时更新dom ReactElement是一个简单的javascript对象,表示UI的可视部分。可以是html元素或其他react组件。 此javascript对象将与一个或多个虚拟DOM元素关联。这是为了表现 组件

我正在读一本使用以下词汇表的书,但我无法理解它们之间的关系:

  • 组件
  • 组件的实例
  • 组件的支持实例
  • 虚拟DOM元素
  • A
    reactive元素

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

虚拟dom元素是表示dom节点的javascript对象,用于更好地重新排序/差异化/创建支持,而不是在每次状态更改时更新dom

ReactElement是一个简单的javascript对象,表示UI的可视部分。可以是html元素或其他react组件。 此javascript对象将与一个或多个虚拟DOM元素关联。这是为了表现

组件

据文件说是的

包含渲染方法的规范对象

我想补充一点:

用于创建、组合和包装具有行为的元素

这些行为可以是:

  • 绑定数据
  • 函数可以绑定到DOM事件
  • 组件的扩展/继承支持
  • react的生命周期支持
  • javascript流控制(隐藏/显示多个组件)
组件的实例显然可以认为与对象定义和对象实例相同

定义是创建已定义对象的蓝图

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

  • 列表:保存杂货元素

    • 列表项目:蜂蜜
    • 列表项目:牛奶
    • 清单项目:谷物
    • 清单项目:水果
一个列表定义-->一个实例

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

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


注意:当我说bind/bound时,我的意思是单向的。

一些概念已经解释了,谢谢@eenagy的文章,它确实有助于解释很多概念。从这篇文章来看,(普通)DOM似乎是一个包含HTML元素的树,React版本的虚拟DOM是一个包含React元素的树。但我认为这篇文章在支持实例方面是错误的。它说“
ReactDOM.render()
返回一个React组件实例”,但在文档中它说“
ReactDOM.render()
返回对组件的支持实例的引用”,本文后面还指出了这种不一致性。