react lazy, suspense, memo

react lazy其实就是懒加载,比如你的父组件中加载了一个子组件,你没有使用react.lazy的话,他会直接去加载父组件和子组件中的代码(父+子.js),如果你使用了react.lazy在你加载父组件的时候(父.js),子组件将不会代码一起加载进去,而是当你需要渲染子组件的时候他的代码才会去加载(子.js),其实就是一个代码分割的作用

然后suspense其实也是搭配react.lazy一起使用的,fallback属性接受任何在组件加载过程中你想展示的 React 元素

const OtherComponent = React.lazy(() => import('./OtherComponent'));

function MyComponent() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <OtherComponent />
      </Suspense>
    </div>
  );
}

suspense可以在你加载子组件代码时来一个显示,就是fallback里面的内容 

参考 https://www.jianshu.com/p/61d6920c9e8f

react.memo

其实就是针对函数式组件的性能优化

const memo = (props)  => React.memo(Mycomponent, (prevProps, nextProps) => 
  prevProps.name === nextProps.name
)

第一个参数Mycomponent是函数式组件,第二个参数是判断Mycomponent是否根据当前传入的props有没有改变的回调函数,返回true则props没有发生改变,所以不用rerender


版权声明:本文为fortunegrant原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。