1
如果某个组件由于prop更改而需要每秒渲染几次,该组件是否应该扩展React.PureComponent?React.PureComponent应该用于频繁更新的组件吗?
该组件没有子组件,但它本身是深嵌的......所以道具正在穿过其他几个组件。
一般来说,决定是否应使用React.PureComponent时,需要考虑哪些关键事项。在哪种情况下使用不好?
如果某个组件由于prop更改而需要每秒渲染几次,该组件是否应该扩展React.PureComponent?React.PureComponent应该用于频繁更新的组件吗?
该组件没有子组件,但它本身是深嵌的......所以道具正在穿过其他几个组件。
一般来说,决定是否应使用React.PureComponent时,需要考虑哪些关键事项。在哪种情况下使用不好?
是的,这听起来像是PureComponent的一个很好的例子,因为您的组件不必要地被相同的道具经常重新渲染。
从React.Component扩展的子组件每次调用render
时都会调用render
。如果相反,子组件是从PureComponent扩展的,那么当母公司通过不支持以前通过的道具的道具时,它将只会调用render
。
它通常是安全的,只要使用PureComponent作为
context
更新shallowEqual
不会检测到这些变化)
谢谢,但我的意思是道具有不同的值每秒几次....如果渲染功能非常简单,是否值得PureComponent做到这一点检查这么多每秒一次。此外,页面上有数百个这些组件都随着该频率而变化。 – c0deNinja
'shallowEqual'具有非常小的性能成本,尤其是与'render'相比,它必须创建新元素并触发阴影DOM比较。如果你所有的组件实例在100%的时间内都获得了不同的道具,那么确保PureComponent有一个小的性能打击。但除此之外,这可能是净收益。 –