我试图理解两者之间有什么区别ReactDOMServer.renderToString()
and ReactDOMServer.renderToStaticMarkup()
在 React 16.8.6 上。
这是我的理解:
renderToStaticMarkup()
当您只想渲染标记并且不想在客户端将其水合时,在服务器端使用。 (https://reactjs.org/docs/react-dom-server.html#rendertostaticmarkup https://reactjs.org/docs/react-dom-server.html#rendertostaticmarkup)
renderToString()
当你想使用时在服务器端使用ReactDOM.hydrate()
功能来滋润客户端的应用程序。 (https://reactjs.org/docs/react-dom-server.html#rendertostring https://reactjs.org/docs/react-dom-server.html#rendertostring)
所以,如果我是对的,这两种方法之间的唯一区别就是renderToString()
添加了data-reactroot
关于应用程序的主要元素。 React 强化了这一点renderToStaticMarkup()
文档:
与 renderToString 类似,但它不会创建额外的 DOM
React 内部使用的属性,例如数据反应根。这是
如果你想使用 React 作为一个简单的静态页面生成器,那么很有用,例如
去掉额外的属性可以节省一些字节。
如果您计划在客户端上使用 React 来使标记具有交互性,
不要使用此方法。相反,使用渲染到字符串在服务器上和ReactDOM.水合物()在客户端上。
但是,我正在读书this https://github.com/facebook/react/issues/12651React 存储库上的问题 Dan Abramov 说:
相反,使用水合物()明确告诉 React 水合现有的
HTML。那么就不会依赖于 data-reactroot 是否存在。
And:
...建议的迁移路径是使用ReactDOM.水合物()哪个完全回避了这个问题,因为它不依赖于
data-reactroot 属性。
所以,我的问题是:data-reactroot与React中的水合物函数相关还是文档错误?
了解这一点对于解决我在补水时遇到的错误非常有帮助。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)