我正在尝试构建一个不使用ReactJS组件状态或道具来显示数据的ReactJS应用程序。相反,我使用props将模型传递给组件,以便它将self
绑定到它,并在模型数据更改时重新呈现。
我希望组件状态“干净”,使组件的状态只包含有关用户体验相关内容的数据。如果您熟悉Firebase,那么应用程序的工作方式与使用Firebase构建反应应用程序非常相似,但它应该更具说明性。
因为我不使用component.setState({...})
我想使用component.forceUpdate
。我多次读过你不应该使用这种方法,因为它会跳过生命周期方法,但这是一个实验。
我现在最感兴趣的是它是否比setState
慢,并且在强制更新时ReactJS是否会执行相同的智能DOM差异化?
答案 0 :(得分:2)
React的forceUpdate()
并不慢于setState()
。
使用相同的智能DOM“差异化”算法,因此组件更新可预测,同时对于高性能应用程序而言足够快。
调用forceUpdate()
将导致在组件上调用render()
,跳过shouldComponentUpdate()
。这将触发子组件的正常生命周期方法,包括每个子组件的shouldComponentUpdate()
方法。如果标记发生变化,React仍然只会更新DOM。
PS:是的,通常您应该尽量避免使用forceUpdate()
,并且只能在组件的this.props
方法中阅读this.state
和render()
。