ReactDOMServer.renderToString()我试图了解 React 16.8.6和React 16.8.6之间有什么区别ReactDOMServer.renderToStaticMarkup()。
这是我的理解:
\n\nrenderToStaticMarkup()当您只想渲染标记而不想在客户端对其进行水合时,在服务器端使用。(https://reactjs.org/docs/react-dom-server.html#rendertostaticmarkup)
renderToString()当您想使用该函数来ReactDOM.hydrate()水合客户端的应用程序时,在服务器端使用。(https://reactjs.org/docs/react-dom-server.html#rendertostring)
因此,如果我是对的,这两种方法之间的唯一区别是在应用程序的主要元素上renderToString()添加了。data-reactrootReact 在renderToStaticMarkup()文档中强调了这一点:
\n\n\n与 renderToString 类似,只不过这不会创建 React 内部使用的额外 DOM 属性,例如data-reactroot。如果您想使用 React 作为简单的静态页面生成器,这非常有用,因为剥离额外的属性可以节省一些字节。
\n\n如果您计划在客户端上使用 React 来使标记具有交互性,\n 不要使用此方法。相反,请在服务器上 使用renderToString并在客户端上使用ReactDOM.Hydrate() 。
\n
但是,我在 React 的存储库上阅读了这个问题,其中 Dan Abramov 说:
\n\n\n\n\n相反,使用Hydro()显式告诉 React 水合现有的\n HTML。那么它就不会依赖于 data-reactroot 是否存在。
\n
和:
\n\n\n …