我是否可以使用HOC而不是extend来更改shouldcomponentupdate的子组件的行为(覆盖)?关于这个的任何例子?
答案 0 :(得分:3)
是。这在一定程度上是可能的。
我们可以实现HoC的shouldComponentUpdate
,它与覆盖Child组件的shouldComponentUpdate
具有相同的效果,如果父Rerender通常只在React Child组件中重新呈现。
function HoC(WrappedComponent) {
return class extends React.Component {
shouldComponentUpdate() {
// change the behaviour here
}
render() {
return <WrappedComponent {...this.props} />;
}
};
}
但是,如果子组件具有setState
的任何内部状态更改,或者来自不同来源的其他来源的forced to rerender,则此操作无效。例如,如果子组件连接到具有connect
的Redux存储,则它将在从存储获取更新时重新呈现,而不管HoC中是否覆盖了shouldComponentUpdate
行为。