mirror of
https://github.com/reactjs/react.dev.git
synced 2026-02-24 12:43:05 +00:00
Adds a new docs website, built with Gatsby JS, to replace the old Jekyll site. Source code for the new site lives in /www (although markdown and YML data still comes from the legacy /docs folder). Changes to either markdown or website source code can be previewed on Netlify. The react-js bot should automatically add comments to each PR with preview links. (This preview is generated by running the newly-added yarn build:docs command in the root package.json.) The majority of the changes in this PR are contained within the new /www directory. However some minor modifications have been made to existing content in the /docs directory: * Modified frontmatter author block to always be an array * Small markdown formatting tweaks
85 lines
3.2 KiB
Markdown
85 lines
3.2 KiB
Markdown
---
|
|
id: react-dom-server
|
|
title: ReactDOMServer
|
|
layout: docs
|
|
category: Reference
|
|
permalink: docs/react-dom-server.html
|
|
---
|
|
|
|
The `ReactDOMServer` object enables you to render components to static markup. Typically, it's used on a Node server:
|
|
|
|
```js
|
|
// ES modules
|
|
import ReactDOMServer from 'react-dom/server';
|
|
// CommonJS
|
|
var ReactDOMServer = require('react-dom/server');
|
|
```
|
|
|
|
## Overview
|
|
|
|
The following methods can be used in both the server and browser environments:
|
|
|
|
- [`renderToString()`](#rendertostring)
|
|
- [`renderToStaticMarkup()`](#rendertostaticmarkup)
|
|
|
|
These additional methods depend on a package (`stream`) that is **only available on the server**, and won't work in the browser.
|
|
|
|
- [`renderToNodeStream()`](#rendertonodestream)
|
|
- [`renderToStaticNodeStream()`](#rendertostaticnodestream)
|
|
|
|
* * *
|
|
|
|
## Reference
|
|
|
|
### `renderToString()`
|
|
|
|
```javascript
|
|
ReactDOMServer.renderToString(element)
|
|
```
|
|
|
|
Render a React element to its initial HTML. React will return an HTML string. You can use this method to generate HTML on the server and send the markup down on the initial request for faster page loads and to allow search engines to crawl your pages for SEO purposes.
|
|
|
|
If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that already has this server-rendered markup, React will preserve it and only attach event handlers, allowing you to have a very performant first-load experience.
|
|
|
|
* * *
|
|
|
|
### `renderToStaticMarkup()`
|
|
|
|
```javascript
|
|
ReactDOMServer.renderToStaticMarkup(element)
|
|
```
|
|
|
|
Similar to [`renderToString`](#rendertostring), except this doesn't create extra DOM attributes such as `data-reactid`, that React uses internally. This is useful if you want to use React as a simple static page generator, as stripping away the extra attributes can save lots of bytes.
|
|
|
|
* * *
|
|
|
|
### `renderToNodeStream()`
|
|
|
|
```javascript
|
|
ReactDOMNodeStream.renderToNodeStream(element)
|
|
```
|
|
|
|
Render a React element to its initial HTML. Returns a [Readable stream](https://nodejs.org/api/stream.html#stream_readable_streams) that outputs an HTML string. The HTML output by this stream is exactly equal to what [`ReactDOMServer.renderToString`](#rendertostring) would return.
|
|
|
|
> Note:
|
|
>
|
|
> Server-only. This API is not available in the browser.
|
|
>
|
|
> The stream returned from this method will return a byte stream encoded in utf-8. If you need a stream in another encoding, take a look a project like [iconv-lite](https://www.npmjs.com/package/iconv-lite), which provides transform streams for transcoding text.
|
|
|
|
* * *
|
|
|
|
### `renderToStaticNodeStream()`
|
|
|
|
```javascript
|
|
ReactDOMNodeStream.renderToStaticNodeStream(element)
|
|
```
|
|
|
|
Similar to [`renderToNodeStream`](#rendertonodestream), except this doesn't create extra DOM attributes such as `data-reactid`, that React uses internally. The HTML output by this stream is exactly equal to what [`ReactDOMServer.renderToStaticMarkup`](#rendertostaticmarkup) would return.
|
|
|
|
> Note:
|
|
>
|
|
> Server-only. This API is not available in the browser.
|
|
>
|
|
> The stream returned from this method will return a byte stream encoded in utf-8. If you need a stream in another encoding, take a look a project like [iconv-lite](https://www.npmjs.com/package/iconv-lite), which provides transform streams for transcoding text.
|