reactjs - 总是使用 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()
吗?
这个问题与我的问题有关,但还没有明确的答案。
解决方案
推荐阅读
- android - 样式化 google 在 Android 中映射我的位置按钮
- mongodb - MongoDb 停止排出副作用
- amazon-web-services - 圆形 ci cloudformation 模板 aws 区域错误
- amazon-web-services - ERRO 0b1 TLS 握手失败,出现错误远程错误:tls: bad certificate server=Orderer remoteaddress=54.1.1.1:40057
- python - 使用 PushButton 循环列表 - PyQt5
- javascript - Firebase FCM 没有被 onMessage() 捕获
- terraform - terraform plan 未检测到漂移
- php - 如何在 Laravel 中将变量从控制器传递给 eloquent
- python-3.x - 为巨大的矩阵提高 numpy 嵌套 for 循环的速度
- ios - 是否可以更改样式为 UIAlertController 的操作表的 Y 位置?