记住lodash isEqual或比较prop对象

时间:2019-04-09 09:51:22

标签: javascript reactjs

我必须使用将状态更新为动画的组件。为了提高性能,我添加了

 shouldComponentUpdate(prevProps) {
    return !isEqual(prevProps.properties, this.props.properties)
  }

其子组件。

properties是具有多达20个属性的对象。

这种显着提高的性能,但是,isEqual运行这么多是相当昂贵的(每秒高达60x)。

记住它是否有意义,还是在检查对象是否相同时在每个渲染器上运行isEqual较轻松的选择?

1 个答案:

答案 0 :(得分:1)

记住isEqual没什么用,因为它的参数already does strict equality check。如果为prevProps.properties === this.props.properties,则不会有性能损失。

为了提高shouldComponentUpdate的性能并避免进行深入的相等性检查,properties prop应该是不可变的,并应使用严格的相等性检查:

  shouldComponentUpdate(prevProps) {
    return prevProps.properties !== this.props.properties;
  }