data-reactroot 与 React 中的 Hydro 函数相关吗?

2024-04-11

我试图理解两者之间有什么区别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(使用前将#替换为@)

data-reactroot 与 React 中的 Hydro 函数相关吗? 的相关文章

随机推荐