我正在尝试构建一个不使用ReactJS组件状态或道具来显示数据的ReactJS应用程序。相反,我使用支持将模型传递到组件,以便将self绑定到组件,并在模型数据更改时重新呈现。
我希望保持组件状态‘干净’,这样组件的状态将只包含有关用户体验相关内容的数据。如果您熟悉Firebase,这些应用程序的工作原理非常类似于使用Firebase构建一个react应用程序,但是它应该更具有声明性。
因为我不使用component.setState({...}),所以我想使用component.forceUpdate。我已经读过很多次了,您不应该使用这个方法,因为它跳过了生命周期方法,但是这是一个实验。
我现在最感兴趣的是,它是否比setState慢,并且在强制进行更新时,ReactJS是否做同样的智能DOM区分?
发布于 2016-12-10 16:30:15
React的forceUpdate()并不比setState()慢。
它的使用相同的智能DOM“差分”算法,这样组件更新是可预测的,同时对于高性能的应用程序来说足够快。
调用forceUpdate()将导致在组件上调用render(),从而跳过shouldComponentUpdate()。这将触发子组件的正常生命周期方法,包括每个子组件的shouldComponentUpdate()方法。只有在标记发生更改时,React才会更新DOM。
PS:是的,通常您应该尽量避免使用forceUpdate(),并且只从组件的render()方法中的this.props和this.state读取。
https://stackoverflow.com/questions/41074525
复制相似问题