React es un marco isomorfo / universal . Eso significa que hay una representación virtual del árbol de componentes de la interfaz de usuario, y eso es independiente de la representación real que genera en el navegador. De la documentación:
Reaccionar es tan rápido porque nunca habla directamente con el DOM. React mantiene una rápida representación en memoria del DOM.
Sin embargo, esa representación en memoria no está vinculada directamente al DOM en el navegador (a pesar de que se llama Virtual DOM, que es un nombre desafortunado y confuso para un marco de aplicaciones universal), y es solo un dato similar al DOM. estructura que representa toda la jerarquía de componentes de la interfaz de usuario y metadatos adicionales. El DOM virtual es solo un detalle de implementación.
"Creemos que los verdaderos fundamentos de React son simplemente ideas de componentes y elementos: poder describir lo que quiere renderizar de manera declarativa. Estas son las piezas compartidas por todos estos paquetes diferentes. Las partes de React específicas para cierta representación los objetivos no suelen ser lo que pensamos cuando pensamos en Reaccionar ". - Reaccionar js Blog
Entonces, la conclusión es que React es agnóstico de representación , lo que significa que no le importa cuál es el resultado final. Puede ser un árbol DOM en el navegador, puede ser XML, componentes nativos o JSON.
"A medida que analizamos paquetes como react-native, react-art, react-canvas y react-three, queda claro que la belleza y la esencia de React no tienen nada que ver con los navegadores o el DOM". - Reaccionar js Blog
Ahora que sabes cómo funciona React, es fácil responder a tu pregunta :)
El montaje es el proceso de generar la representación virtual de un componente en la representación final de la interfaz de usuario (por ejemplo, DOM o componentes nativos).
En un navegador, eso significaría generar un elemento React en un elemento DOM real (por ejemplo, un elemento HTML div o li ) en el árbol DOM. En una aplicación nativa, eso significaría generar un elemento React en un componente nativo. También puede escribir su propio renderizador y generar componentes React en JSON o XML o incluso XAML si tiene el coraje.
Por lo tanto, los controladores de montaje / desmontaje son críticos para una aplicación React, porque solo puede estar seguro de que un componente se genera / procesa cuando se monta . Sin embargo, el componentDidMount
controlador se invoca solo cuando se procesa en una representación de UI real (DOM o componentes nativos), pero no si se procesa en una cadena HTML en el servidor utilizandorenderToString
, lo que tiene sentido, ya que el componente no se monta realmente hasta que alcanza navegador y se ejecuta en él.
Y, sí, Mounting también es un nombre desafortunado / confuso, si me preguntas. En mi humilde opinión componentDidRender
y componentWillRender
sería mucho mejores nombres.
React.createElement(FooComponent)
no estás creando una instancia deFooComponent
.foo
es una representación virtual de DOMFooComponent
también conocida como elemento React. Pero tal vez eso es lo que quieres decir conFooComponent
tipo React . Independientemente, no monta componentes en React, llama a render, que a su vez podría montar el componente si es necesario crear un nodo DOM real para representar el componente en el árbol DOM. El montaje real es el evento en el que esto sucede por primera vez.findDOMNode
en elementos React).