在ReactJS中使用forceUpdate比setState()慢吗?

时间:2016-12-10 10:33:06

标签: reactjs

我正在尝试构建一个不使用ReactJS组件状态或道具来显示数据的ReactJS应用程序。相反,我使用props将模型传递给组件,以便它将self绑定到它,并在模型数据更改时重新呈现。

我希望组件状态“干净”,使组件的状态只包含有关用户体验相关内容的数据。如果您熟悉Firebase,那么应用程序的工作方式与使用Firebase构建反应应用程序非常相似,但它应该更具说明性。

因为我不使用component.setState({...})我想使用component.forceUpdate。我多次读过你不应该使用这种方法,因为它会跳过生命周期方法,但这是一个实验。

我现在最感兴趣的是它是否比setState慢,并且在强制更新时ReactJS是否会执行相同的智能DOM差异化?

1 个答案:

答案 0 :(得分:2)

React的forceUpdate()并不慢于setState()

使用相同的智能DOM“差异化”算法,因此组件更新可预测,同时对于高性能应用程序而言足够快。

调用forceUpdate()将导致在组件上调用render(),跳过shouldComponentUpdate()。这将触发子组件的正常生命周期方法,包括每个子组件的shouldComponentUpdate()方法。如果标记发生变化,React仍然只会更新DOM。

PS:是的,通常您应该尽量避免使用forceUpdate(),并且只能在组件的this.props方法中阅读this.staterender()