Soy un poco nuevo para reaccionar. Veo que tenemos que importar dos cosas para comenzar, React
y ReactDOM
, ¿alguien puede explicar la diferencia? Estoy leyendo la documentación de React , pero no dice.
Soy un poco nuevo para reaccionar. Veo que tenemos que importar dos cosas para comenzar, React
y ReactDOM
, ¿alguien puede explicar la diferencia? Estoy leyendo la documentación de React , pero no dice.
Respuestas:
React y ReactDOM se dividieron recientemente en dos bibliotecas diferentes. Antes de v0.14, toda la funcionalidad de ReactDOM formaba parte de React. Esto puede ser una fuente de confusión, ya que cualquier documentación ligeramente fechada no mencionará la distinción React / ReactDOM.
Como su nombre lo indica, ReactDOM es el pegamento entre React y el DOM. A menudo, solo lo usará para una sola cosa: montar con ReactDOM.render()
. Otra característica útil de ReactDOM es ReactDOM.findDOMNode()
que puede usar para obtener acceso directo a un elemento DOM. (Algo que debe usar con moderación en las aplicaciones React, pero puede ser necesario). Si su aplicación es "isomórfica", también la usaría ReactDOM.renderToString()
en su código de fondo.
Para todo lo demás, está React. Utiliza React para definir y crear sus elementos, para ganchos de ciclo de vida, etc., es decir, las entrañas de una aplicación React.
La razón por la que React y ReactDOM se dividieron en dos bibliotecas se debió a la llegada de React Native. React contiene la funcionalidad utilizada en aplicaciones web y móviles. La funcionalidad ReactDOM se utiliza solo en aplicaciones web. [ ACTUALIZACIÓN: Tras una investigación más profunda, está claro que mi ignorancia de React Native se está mostrando. Tener el paquete React común tanto en la web como en el móvil parece ser más una aspiración que una realidad en este momento. React Native es actualmente un paquete completamente diferente.]
Vea la publicación del blog que anuncia la versión v0.14: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html
Del anuncio de lanzamiento de React v0.14 Beta .
Si nos fijamos en paquetes como
react-native
,react-art
,react-canvas
, yreact-three
, ha quedado claro que la belleza y la esencia de Reaccionar no tiene nada que ver con navegadores o el DOM.Para aclarar esto y facilitar la creación de más entornos en los que React pueda procesar, dividimos el paquete principal de reacción en dos: react y react-dom.
Fundamentalmente, la idea de React no tiene nada que ver con los navegadores, simplemente resultan ser uno de los muchos objetivos para procesar árboles de componentes. El paquete ReactDOM ha permitido a los desarrolladores eliminar cualquier código no esencial del paquete React y moverlo a un repositorio más apropiado.
El
react
paquete contieneReact.createElement
,React.createClass
yReact.Component
,React.PropTypes
,React.Children
, y los otros ayudantes relacionados con los elementos y clases de componentes. Pensamos en estos como los ayudantes isomórficos o universales que necesita para construir componentes.El
react-dom
paquete contieneReactDOM.render
,ReactDOM.unmountComponentAtNode
yReactDOM.findDOMNode
, y en lareact-dom/server
que tenemos el apoyo representación del lado del servidor conReactDOMServer.renderToString
yReactDOMServer.renderToStaticMarkup
.
Estos dos párrafos explican de dónde v0.13
terminaron los métodos API principales .
Antes de la v0.14 , formaban parte del archivo principal de ReactJs, pero como en algunos casos es posible que no necesitemos ambos, los separan y comienza a partir de la versión 0.14, de esa manera si solo necesitamos uno de ellos, nuestra aplicación será más pequeña debido a usando solo uno de esos:
var React = require('react'); /* importing react */
var ReactDOM = require('react-dom'); /* importing react-dom */
var MyComponent = React.createClass({
render: function() {
return <div>Hello World</div>;
}
});
ReactDOM.render(<MyComponent />, node);
El paquete React contiene: React.createElement, React.createClass, React.Component, React.PropTypes, React.Children
El paquete React-dom contiene: ReactDOM.render, ReactDOM.unmountComponentAtNode, ReactDOM.findDOMNode y react-dom / server que incluye: ReactDOMServer.renderToString y ReactDOMServer.renderToStaticMarkup.
El módulo ReactDOM expone métodos específicos de DOM, mientras que React tiene las herramientas principales destinadas a ser compartidas por React en diferentes plataformas (por ejemplo, React Native).
Parece que han separado React en react
y react-dom
paquetes, por lo que no tiene que usar la parte relacionada con DOM para proyectos donde le gustaría usarla en casos no específicos de DOM, como aquí https: // github.com/Flipboard/react-canvas
donde importan
var React = require('react');
var ReactCanvas = require('react-canvas');
como puedes ver. Sin react-dom
.
Para ser más conciso, reaccionar es para los componentes y react-dom es para representar los componentes en el DOM. 'react-dom' actúa como un pegamento entre componentes y DOM. Utilizará el método render () de react-dom para renderizar componentes en el DOM y eso es todo lo que debe saber cuando comienza con él.
El react package
mantiene el react source
de componentes, estado, accesorios y todo el código que se reaccionan.
El react-dom
paquete como su nombre lo indica es el glue between React and the DOM
. A menudo, sólo se va a usar para una sola cosa: mounting your application to the index.html file with ReactDOM.render()
.
¿Por qué separarlos?
El reason
React y ReactDOM se dividieron en dos bibliotecas debido a la llegada de React Native (A react platform for mobile development)
.
ReactDOM
- facebook.github.io/react/blog/2016/11/16/react-v15.4.0.html