Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React将PureComponent包装在HOC中_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript React将PureComponent包装在HOC中

Javascript React将PureComponent包装在HOC中,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我对react中的PureComponent有一个问题。如您所知,它在长平面列表中非常有用,可以避免不必要的重新渲染。但是,如果我将一个PureComponent封装在一个HOC中,会发生什么呢 const CachedImage = withCache( class CachedImage extends React.PureComponent { render() { console.log("Rendering"); return &

我对react中的PureComponent有一个问题。如您所知,它在长平面列表中非常有用,可以避免不必要的重新渲染。但是,如果我将一个PureComponent封装在一个HOC中,会发生什么呢

const CachedImage = withCache(
  class CachedImage extends React.PureComponent {
    render() {
      console.log("Rendering");
      return <Image {...this.props} />;
    }
  }
);

Component
PureComponent
之间唯一的区别在于
PureComponent
不实现
shouldComponentUpdate()
,但
PureComponent
通过一个浅层的属性和状态比较来实现它

这意味着它对你的道具做了一个简单的浅层比较,这个比较要快得多,但是需要简单的对象作为道具传递,这样它才能正常工作。因此,不仅仅是扩展
PureComponent
,这会给您带来不必要的重新渲染,您还必须考虑您的道具与该组件的比较是否正确

您可以阅读有关
PureComponent
的更多信息,以及一些有关浅层比较实际工作原理的信息

  const withCache = (Component) => {
      const Wrapped = (props) => {
           ...