情况就是这样:
此组件将许多数据呈现为列表。如果我使用React state / props来控制DOM样式(添加类或修改某些属性),当用户对列表做出反应时,React将始终运行render()
函数,如mouseover
,{{1}等等..
虽然React有虚拟DOM技术,但我认为每次运行click
仍然效率很低。文档不建议直接操作DOM,但我认为它更有效。我该怎么办? THX。
答案 0 :(得分:1)
我不会将React与直接操作DOM混合在一起;做两个,但不是两个。
如果您已经在使用React,只需将它用于您想要的内容即可。如果可能,将组件分成尽可能小的部分;这将有助于数字呈现。
让React重新渲染太多可能会稍微低一些,但请记住,React已针对DOM操作进行了大量优化。
答案 1 :(得分:0)
就react
中的重新渲染而言,它已经过大量优化。您可能认为render()
函数在每个小操作上运行,但不可见的事情是整个DOM不会发生rerender
,而只会发生更改的部分。
React使用virtual DOM technology
,然后它取出当前和虚拟dom之间的差异,就像字符串比较一样,然后只渲染差异,因此效率很高。
所以我建议你按照文档进行操作,不要混淆DOM操作和反应。