我应该直接操作DOM还是使用React状态/道具?

时间:2017-01-03 02:47:24

标签: javascript reactjs

情况就是这样:

此组件将许多数据呈现为列表。如果我使用React state / props来控制DOM样式(添加类或修改某些属性),当用户对列表做出反应时,React将始终运行render()函数,如mouseover,{{1}等等..

虽然React有虚拟DOM技术,但我认为每次运行click仍然效率很低。文档不建议直接操作DOM,但我认为它更有效。我该怎么办? THX。

2 个答案:

答案 0 :(得分:1)

我不会将React与直接操作DOM混合在一起;做两个,但不是两个。

如果您已经在使用React,只需将它用于您想要的内容即可。如果可能,将组件分成尽可能小的部分;这将有助于数字呈现。

让React重新渲染太多可能会稍微低一些,但请记住,React已针对DOM操作进行了大量优化。

答案 1 :(得分:0)

react中的重新渲染而言,它已经过大量优化。您可能认为render()函数在每个小操作上运行,但不可见的事情是整个DOM不会发生rerender,而只会发生更改的部分。

React使用virtual DOM technology,然后它取出当前和虚拟dom之间的差异,就像字符串比较一样,然后只渲染差异,因此效率很高。

所以我建议你按照文档进行操作,不要混淆DOM操作和反应。