我们正在使用React
(和Redux
)构建示例,其中一个组件(Component_B
)是围绕编写的第三方应用程序的 wrapper 在ExtJS
中。
该第三方非常重视重绘,因此我们希望最大程度地减少React
对其进行重新渲染的时间。
Component_B
的{{1}}和state
会定期更改并重绘props
。
当Component_B
Component_B
和props
更改时,我们显式调用某些state
函数,以更新ExtJS
视觉呈现。
Third-Party App
我们如何避免 .---------------------------------------------------------------.
| Component_A |
| |
| |
| .------------------------------------------.|
| | Component_B ||
| | ||
| | .------------------------------------.||
| | | Third-Party App (written in ExtJS) |||
| | | |||
| | '------------------------------------'||
| '------------------------------------------'|
'---------------------------------------------------------------'
component_B
和props
的更改触发state
的重新呈现,尽管Third-Party App
受{{ 1}}?
答案 0 :(得分:1)
我认为您正在React中寻找一个名为shouldComponentUpdate
的函数。
使用shouldComponentUpdate()来让React知道组件的输出是否不受当前状态或道具更改的影响。默认行为是在每次状态更改时重新呈现,并且在大多数情况下,您应该依赖默认行为。
当接收到新的道具或状态时,shouldComponentUpdate()在渲染之前被调用。默认为true。初始渲染或使用forceUpdate()时不会调用此方法。
因此,只需将此函数添加到Component_B中即可:
shouldComponentUpdate(nextProps, nextState) {
...
return false;
}
还是您希望重新渲染Component_B,而不是ExtJS应用本身?在这种情况下,请在评论中让我知道。