知海

renderToStaticMarkup()

ReactAPI 参考:React DOM

renderToStaticMarkup()

renderToStaticMarkup 将非交互式 React 组件树渲染为 HTML 字符串。

js 复制代码
const html = renderToStaticMarkup(reactNode, options?)

参考 {/reference/}

renderToStaticMarkup(reactNode, options?) {/rendertostaticmarkup/}

在服务器上,调用 renderToStaticMarkup 将你的应用渲染为 HTML。

js 复制代码
import { renderToStaticMarkup } from 'react-dom/server';

const html = renderToStaticMarkup(<Page />);

它将 React 组件转化为非交互式 HTML。

请参考下方更多示例

参数 {/parameters/}

  • reactNode:你想要渲染为 HTML 的 React 节点。例如,像 <Page /> 这样的 JSX 元素。
  • 可选的 options:一个用于服务器渲染的对象。
    • 可选的 identifierPrefix:一个字符串前缀,React 使用 useId 生成的 ID 会使用此前缀,以避免在同一页面上使用多个根时发生冲突。

返回值 {/returns/}

一个 HTML 字符串。

注意事项 {/caveats/}

  • renderToStaticMarkup 的输出无法进行二次渲染。

  • renderToStaticMarkup 对 Suspense 的支持有限。如果某个组件触发了 Suspense,renderToStaticMarkup 会立即将其 fallback 作为 HTML 输出。

  • renderToStaticMarkup 可以在浏览器中运行,但不建议在客户端代码中使用。如果你需要在浏览器中将组件渲染为 HTML,请将其渲染到 DOM 节点中以获取 HTML


用法 {/usage/}

将非交互式 React 树渲染为 HTML 字符串 {/rendering-a-non-interactive-react-tree-as-html-to-a-string/}

调用 renderToStaticMarkup 将你的应用渲染为 HTML 字符串,并将其与服务器响应一起发送:

js {5-6} 复制代码
import { renderToStaticMarkup } from 'react-dom/server';

// 路由处理程序的语法取决于你的后端框架
app.use('/', (request, response) => {
  const html = renderToStaticMarkup(<Page />);
  response.send(html);
});

这将生成你的 React 组件的非交互式 HTML 输出。

此方法渲染的是 无法二次渲染的非交互式 HTML。如果你需要使用 React 作为简单的静态页面生成器,或者需要呈现纯静态内容(例如邮件),则此方法非常适用。

对于交互式应用,建议在服务器端使用 renderToString,在客户端使用 hydrateRoot

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。