React.render返回什么?组件实例还是组件类?

jhe*_*dus 5 terminology reactjs

要点上React.render = (ReactElement, HTMLElement | SVGElement) => ReactComponent;

什么是ReactComponent指什么?一个实例或类

问原因:我正在尝试创建一个可视化React术语的概念图(如下所示)。

在此处输入图片说明

Lyu*_*mir 5

TL; DR React.render返回一个ReactComponent实例


如您所写,React.render接受两个参数。了解它们的含义很重要。这一点令人困惑,所以请忍受我。

1)ReactElement-是一个虚拟的dom实例。有时,此实例映射到本地DOM元素(例如“ div”),有时它映射到ReactComponent实例,例如MyComponent封装其他ReactElements的树。您在这里看到递归吗?

ReactElement -> Tree<ReactComponent returns ReactElement -> Tree<ReactComponent returns ReactElement>> 
Run Code Online (Sandbox Code Playgroud)

现在,让我们创建一个虚拟dom实例

const virtualElement = React.createElement('MyComponent');
Run Code Online (Sandbox Code Playgroud)

2)第二个参数是将virtualElement渲染到的本机DOM元素。

基本上,React.render所做的是转换virtualElementin本机DOM元素并将其插入到React.render函数中指定为第二个参数的本机DOM元素中。


结果,React.render返回一个ReactComponent实例(封装的ReactElement树的有状态表示)。

我想您可能会对这种表示法感到有些沮丧,但这很合情理。例如,用Java来考虑它:

function Person getPerson() { 
  return new Person();
}
Run Code Online (Sandbox Code Playgroud)

可以看到,函数的签名不是指定PersonInstance为返回值,而是指定为返回值Person