首页 > 解决方案 > 总是使用 renderToStaticMarkup() 而不是 renderToString()?

问题描述

根据 react 文档,renderToString()创建了 React 内部使用的额外 DOM 属性,例如 data-reactroot,而renderToStaticMarkup没有。

而且我认为这ReactDOM.hydrate()使得事件处理程序能够附加到通过字符串呈现的标记上renderToString(),这要归功于额外的 DOM 属性,例如 data-reactroot。

但是我已经测试了自己,它ReactDOM.hydrate()也适用于通过 呈现的静态标记renderToStaticMarkup(),这意味着将事件处理程序组合ReactDOM.hydrate并成功地附加到字符串呈现的 DOM。renderToStaticMarkup()

根据Dan Abramov 的问题hydrate()不依赖于内部反应属性(data-reactroot)

相反,使用 hydrate() 明确告诉 React 水合现有的 HTML。那么它不会取决于 data-reactroot 是否存在。

renderToStaticMarkup()所以我可能会猜测使用而不是总是更好renderToString(),因为性能会通过以下方式得到更好的优化renderToStaticMarkup()

ReactDOM.renderToString()只是 hydra() 在 React v16 上发布之前的一种旧方法,只能与render()and一起使用dangerouslySetInnerHTML()吗?

我可以认为我们总是可以使用renderToStaticMarkup()overrenderToString()吗?

这个问题与我的问题有关,但还没有明确的答案。

标签: reactjs

解决方案


推荐阅读