我应该直接操作DOM还是使用React state/props?

问题描述:

这种情况:我应该直接操作DOM还是使用React state/props?

此组件将许多数据呈现为列表。如果我使用状态做出反应/道具来控制DOM样式(类添加或修改某些属性),反应过来的时候用户与列表反应会一直运行render()功能,如mouseoverclick和等。

虽然已经作出反应虚拟DOM技术,但我认为每次运行render()的效率仍然很低。这些文档不建议直接操作DOM,但我认为它更有效。我该怎么办?谢谢。

+2

按照文档中的建议(不要直接操作DOM,除非需要)。换句话说,现在要遵循最佳实践,如果事情开始变得缓慢或效率低下,那么就担心_then_。 – Jack

+0

不要担心效率,直到遇到瓶颈。这被称为“不成熟的优化”,这是一个坏习惯。 React的速度足以以60fps的速度更新DOM。不要改变反应输出的DOM。 –

我不会混合写直接操作DOM的React;做,但不是两个。

如果您已经在使用React,只需使用它即可。如果可能的话,将组件分解成尽可能小的碎片;这将有助于数字呈现。

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

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

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

所以我建议你按照文档,不要混合DOM操作与反应。