react-dom/server 在客户端工作吗?

Does react-dom/server work on the client-side?

我需要在客户端呈现顶级 html 标记(例如,<html><head>...</head><body></body></html>)。结果将被注入到 iframe 中。在服务器上,我会使用 react-dom/server 中的 renderToStaticMarkup 函数,但仅限客户端的 react-dom 没有此函数。

react-dom/server 可以在最新版本的 React(当前为 15.3.0)的客户端上工作吗?如果是这样,React 开发团队是否有任何迹象表明它会在未来的版本中继续在客户端上得到支持?

tl;博士:是的。

我确认它在 react@15.3.0 中有效。 facebook/react 团队实际上将其保留为 React 本身的一部分,但仅将其公开为 React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED。如果你愿意,你可以直接使用它:

var ReactDOMServer = React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
console.log(ReactDOMServer.renderToStaticMarkup(<div />)); // => <div></div>

当然,如果你这样做,你可能会被解雇...

幸运的是,他们还创建了 react-dom/server (react-dom-server-15.3.0.min.js) 的客户端版本。该脚本没有太多内容。它所做的只是将 React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED 公开为 ReactDOMServer(使用 UMD 包装器)。

我只能假设,如果 React 团队努力为它创建一个浏览器构建,它打算继续在客户端工作,并将在未来继续得到支持。