ReactDOMServer
El objeto ReactDOMServer
te permite renderizar componentes a un marcado estático. Normalmente, se usa en un servidor de Node:
// módulos ES
import ReactDOMServer from 'react-dom/server';
// CommonJS
var ReactDOMServer = require('react-dom/server');
Resumen
Los siguientes métodos se pueden utilizar tanto en el servidor como en el entorno del navegador:
Estos métodos adicionales dependen de un paquete (stream
) que solo está disponible en el servidor, y no funcionará en el navegador.
Referencia
renderToString()
ReactDOMServer.renderToString(element)
Renderiza un elemento React a su HTML inicial. React devolverá HTML en una cadena de texto. Puedes usar este método para generar HTML en el servidor y enviar el marcado en la solicitud inicial para que las páginas se carguen más rápido y permitir que los motores de búsqueda rastreen tus páginas con fines de SEO.
Si llamas ReactDOM.hydrate()
a un nodo que ya tiene este marcado desde el servidor, React lo conservará y solo adjuntará los controladores de eventos, lo que te permitirá tener una experiencia de primera carga muy eficaz.
renderToStaticMarkup()
ReactDOMServer.renderToStaticMarkup(element)
Similar a renderToString
, excepto que esto no crea atributos DOM adicionales que React usa internamente, como data-reactroot
. Esto es útil si desea utilizar React como un simple generador de páginas estáticas, ya que eliminar los atributos adicionales puede ahorrar algunos bytes.
Si planeas usar React en el cliente para hacer que el marcado sea interactivo, no use este método. En su lugar, use renderToString
en el servidor y ReactDOM.hydrate()
en el cliente.
renderToNodeStream()
ReactDOMServer.renderToNodeStream(element)
Renderiza un elemento React a su HTML inicial. Devuelve una Secuencia de lectura que genera una cadena HTML. La salida HTML de este flujo es exactamente igual a lo que devolvería ReactDOMServer.renderToString
Puede usar este método para generar HTML en el servidor y enviar el marcado en la solicitud inicial para que las páginas se carguen más rápido y permitir que los motores de búsqueda rastreen sus páginas con fines de SEO.
Si llamas ReactDOM.hydrate()
en un nodo que ya tiene este marcado de servidor, React lo conservará y solo adjuntará controladores de eventos, lo que te permitirá tener una experiencia de primera carga muy eficaz.
Nota:
Solo para el servidor. Esta API no está disponible en el navegador.
El flujo devuelto por este método devolverá un flujo de bytes codificado en utf-8. Si necesita un flujo en otra codificación, observa un proyecto como iconv-lite, que proporciona flujos de transformación para la transcodificación de texto.
renderToStaticNodeStream()
ReactDOMServer.renderToStaticNodeStream(element)
Similar a renderToNodeStream
, excepto que esto no crea atributos DOM adicionales que React usa internamente, como data-reactroot
. Esto es útil si desea utilizar React como un simple generador de páginas estáticas, ya que eliminar los atributos adicionales puede ahorrar algunos bytes.
La salida HTML de este flujo es exactamente igual a lo que ReactDOMServer.renderToStaticMarkup
devolvería.
Si planeas usar React en el cliente para hacer que el marcado sea interactivo, no use este método. En su lugar, utilice renderToNodeStream
en el servidor y ReactDOM.hydrate()
en el cliente.
Nota:
Solo para el servidor. Esta API no está disponible en el navegador.
El flujo devuelto por este método devolverá un flujo de bytes codificado en utf-8. Si necesita un flujo en otra codificación, observa un proyecto como iconv-lite, que proporciona flujos de transformación para la transcodificación de texto.