Ant Design Pro V5精讲(基础篇十):useEffect和useLayoutEffect的区别

968 阅读1分钟

应用场景

  1. useEffect是异步操作:90%场景使用useEffect,它是在每轮DOM渲染结束后,且浏览器执行绘制后才去执行。
  2. useLayoutEffec是同步操作:它是在所有的Dom渲染后同步调用effect,但它是在浏览器执行绘制之前,执行useLayoutEffect内部的更新计划将阻塞了浏览器的绘制后同步刷新DOM,,主要用在读取DOM布局或样式并同步触发重渲染。

useEffect

大部分时候用这个,它是在DOM渲染完后且浏览器执行完绘制后执行effect,当然这个effect的执行可以人工控制,注意useEffcet的几个知识点:

  • 第一个参数是回调函数,它有useEffect内部和外部定义法,外部定义法注意用useCallback包装一下。
  • 第二个参数依赖项数组:有三种情况,A.不需要这个依赖项,B.依赖项数组为空[],C.依赖项数组组件内部的某一个state或者props。
  • return(即清除函数):这个是可选的,它是在useEffect执行第二遍前时会去执行。

useLayoutEffect

用法与useEffect一样,只是执行时机不一样,和它的名字一样,当需要获取DOM本身的布局或者样式时再去更新时,可以用这个。官方推荐是非不得已不用。