2017-02-10 92 views
1

如果某个组件由于prop更改而需要每秒渲染几次,该组件是否应该扩展React.PureComponent?React.PureComponent应该用于频繁更新的组件吗?

该组件没有子组件,但它本身是深嵌的......所以道具正在穿过其他几个组件。

一般来说,决定是否应使用React.PureComponent时,需要考虑哪些关键事项。在哪种情况下使用不好?

回答

0

是的,这听起来像是PureComponent的一个很好的例子,因为您的组件不必要地被相同的道具经常重新渲染。

从React.Component扩展的子组件每次调用render时都会调用render。如果相反,子组件是从PureComponent扩展的,那么当母公司通过不支持以前通过的道具的道具时,它将只会调用render

它通常是安全的,只要使用PureComponent作为

  • 您的组件及其子不依赖context更新
  • 您的组件不具有直接由突变对象或数组的道具父母(shallowEqual不会检测到这些变化)
+0

谢谢,但我的意思是道具有不同的值每秒几次....如果渲染功能非常简单,是否值得PureComponent做到这一点检查这么多每秒一次。此外,页面上有数百个这些组件都随着该频率而变化。 – c0deNinja

+0

'shallowEqual'具有非常小的性能成本,尤其是与'render'相比,它必须创建新元素并触发阴影DOM比较。如果你所有的组件实例在100%的时间内都获得了不同的道具,那么确保PureComponent有一个小的性能打击。但除此之外,这可能是净收益。 –