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

IT技术 javascript reactjs client-side server-side react-dom
2021-05-11 23:22:03

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

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

1个回答

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 团队努力为它创建浏览器构建,它打算继续在客户端工作,并且将来会继续得到支持。