总是使用 renderToStaticMarkup() 而不是 renderToString()?

koo*_*koo 7 reactjs

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

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

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

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

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

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

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

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

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