覆盖shouldcomponentupdate与HOC

时间:2017-06-28 00:09:21

标签: reactjs

我是否可以使用HOC而不是extend来更改shouldcomponentupdate的子组件的行为(覆盖)?关于这个的任何例子?

1 个答案:

答案 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行为。