首页 > 其他分享 >useEffect 和 useLayoutEffect浅析

useEffect 和 useLayoutEffect浅析

时间:2022-10-07 23:44:29浏览次数:41  
标签:useLayoutEffect useEffect 渲染 更新 执行 浅析 页面

执行时期的区别

useEffect 回调函数的执行时期

useEffect为异步执行,执行时期为

  • 触发状态更新(如:setState,forceUpdate)
  • React渲染函数执行(render)
  • 将更新渲染到页面上
  • 执行useEffect回调函数

useLayoutEffect 回调函数的执行时期

  • 触发更新
  • React渲染函数执行
  • 同步执行 useLayoutEffect回调函数 (如果此函数中存在 触发更新操作,如setState,会放弃本阶段的页面渲染,先执行更新然后再统一进行渲染)
  • 将更新渲染到页面上

对比后得到两者区别

  • 执行时期的区别,useEffect回调是在更新渲染到页面以后异步执行 而 useLayoutEffect是在更新渲染在页面前同步执行。造成的影响是,useLayoutEffect 回调中如果有耗时操作会阻塞页面的渲染,造成性能问题。

  • 两者中如果调用setState更新状态,都会再次执行render,区别是 useEffect会进行两次页面更新渲染,useLayoutEffect只会执行最后一次页面更新渲染。所以,看到的结果是使用useEffect时候执行更新页面上会出现闪烁,而useLayoutEffect确不会

  • useLayoutEffect 的执行时期 同 class组件生命周期 componentDidMount 和 componentDidUpdate

所以,得出的结论是,大多数的场景中都应该使用useEffect来实现我们的逻辑,仅仅在一些特殊情况,比如需要去监听同步更新状态防止页面煽动时才需要useLayoutEffect。

标签:useLayoutEffect,useEffect,渲染,更新,执行,浅析,页面
From: https://www.cnblogs.com/honkerzh/p/16767530.html

相关文章

  • 前端内存泄露浅析
    手上负责的vue项目最近出现一个这样的问题,用户用着用着就出现:”喔唷,崩溃啦!“的提示。做了以下性能优化尝试:主动销毁对象及其子对象主动取消监听listener本地搜索减少组件DOM......
  • 浅析前端上传
    图片,音频,视频等等这几种常见的资源类型,如果需要从前端上传到服务端,有几种方式呢?不妨回顾一下经历过的项目想一想。项目上也用到很多上传文件的地方,七牛云,阿里云OSS,讯飞weba......
  • 【MySQL系列】- 浅析undo log
    undolog是什么undolog可以称为撤销日志、undo日志,它记录着事务回滚前的数据。官方定义:Astorageareathatholdscopiesofdatamodifiedbyactivetransactions.翻......
  • React的useLayoutEffect和useEffect执行时机有什么不同
    我们先看下React官方文档对这两个hook的介绍,建立个整体认识useEffect(create,deps):该Hook接收一个包含命令式、且可能有副作用代码的函数。在函数组件主体内(这......
  • Git 配置文件 浅析
    config文件位置仓库级配置文件:在所创建仓库下./.git/config针对该仓库。在进入仓库的情况下,你可以传递--local选项让Git强制读写此文件,默认情况下用的就是它。......
  • 浅析 C++ 调用 Python 模块
    浅析C++调用Python模块作为一种胶水语言,Python能够很容易地调用C、C++等语言,也能够通过其他语言调用Python的模块。Python提供了C++库,使得开发者能很方便......
  • 浅析EasyCVR平台如何实现视频H.264转H.265在网页端播放以及应用意义
    随着安防视频监控行业的快速发展,几乎所有的摄像头现在都能支持H.264视频编码格式,并且越来越多的摄像头设备也开始支持H.265。相对来说,H.265比H.264有更多的优势,压缩更高、网......
  • Linux 线程浅析
    进程和线程的区别与联系在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么,只是维护应用程序所需的各种资源,而线程则是真正的执行实体。为了让进......
  • Linux 进程调度浅析
    概述操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说“某某函数比某某函数效率......
  • React-Native 中关于 useEffect 钩子的完整指南
    React-Native中关于useEffect钩子的完整指南本指南将提供有关react-native中useEffect挂钩的完整信息。同样的概念也可以应用于反应。在React-Native应用程序......