React使用useEffect与useLayoutEffect的区别

简介: React使用useEffect与useLayoutEffect的区别

useEffect 是每次render之后就会调用的函数,可以代替之前的三个钩子

微信图片_20230107103241.png

useEffect可以接受两个参数


案例


要想知道 +1操作这个app什么时候第一次渲染,可以使用useEffect,第二个参数必须是空数组,这样只在第一次调用时执行,第二三次不执行

//使用useEffect之前要先引入
import React, { useEffect,useState } from 'react'
import ReactDOM from 'react-dom'
function App(){
  const [n,setN] = useState(0);
  const add=()=>{
    setN(i=>i+1);
  };
  // 第一次渲染,只执行这一次,[]要在第二个参数
useEffect(()=>{
      console.log('这是第一次渲染执行这句话');
    },[]);
  return(
    <div>
      n:{n}
      <button onClick={add}>+1</button>
    </div>
  )
}
ReactDOM.render(<App />,document.getElementById('root'));

每次渲染都要执行,只要有一个数据变化了就执行,不用写第二个参数

useEffect(()=>{
      console.log('这是第一次渲染执行这句话');
    });

当某一个数据变化了就执行,例如当n变化了就执行

useEffect(()=>{
      console.log('n变化了');
    },[n])

使用useEffect是为了干什么呢?


当代码有副作用了,用于清除副作用,清除定时器等

对环境的改变即为副作用,如修改document.title,但我们不一定非要把副作用放在useEffect里


useLayoutEffect和useEffect的用法一样,但也有区别


  • useEffect是按照顺序执行代码的,改变屏幕像素之后执行(先渲染,后改变DOM),当改变屏幕内容时可能会产生闪烁
  • useLayoutEffect是改变屏幕像素之前就执行了(会推迟页面显示的事件,先改变DOM后渲染),不会产生闪烁


注意:

  • useLayoutEffect总是比useEffect先执行
  • useLayoutEffect里的任务最好影响了Layout
  • 为了用户体验,优先使用useEffect(优先渲染)


目录
相关文章
|
2月前
|
前端开发 JavaScript
深入理解并实践React Hooks —— useEffect与useState
深入理解并实践React Hooks —— useEffect与useState
143 1
|
9天前
|
JavaScript 前端开发 算法
React 框架和 Vue 框架的区别是什么?
React框架和Vue框架都是目前非常流行的前端JavaScript框架,它们在很多方面存在区别
|
12天前
|
前端开发 JavaScript
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
|
22天前
|
JavaScript 前端开发 算法
在性能上,React和Vue有什么区别
【10月更文挑战第23天】在性能上,React和Vue有什么区别
16 1
|
28天前
|
前端开发 JavaScript UED
react-router 里的 Link 标签和 a 标签有什么区别
`react-router` 中的 `Link` 标签与 HTML 中的 `a` 标签的主要区别在于:`Link` 是专门为 React 应用设计的,用于实现客户端路由导航,不会触发页面的重新加载,而 `a` 标签则会刷新整个页面。使用 `Link` 可以提升应用的性能和用户体验。
|
1月前
|
前端开发 开发者 UED
React 18 与之前版本的主要区别
【10月更文挑战第12天】 总的来说,React 18 的这些区别体现了 React 团队对于提升应用性能、用户体验和开发效率的持续努力。开发者需要适应这些变化,充分利用新特性来构建更出色的应用。同时,随着技术的不断发展,React 也将继续演进,为开发者带来更多的创新和便利。
|
2月前
|
前端开发
React中函数式Hooks之useEffect的使用
本文通过示例代码讲解了React中`useEffect` Hook的用法,包括模拟生命周期、监听状态和清理资源。
56 2
React中函数式Hooks之useEffect的使用
|
22天前
|
开发框架 JavaScript 前端开发
React和Vue之间的区别是什么
【10月更文挑战第23天】React和Vue之间的区别是什么
14 0
|
22天前
|
JavaScript 前端开发 Android开发
React和Vue之间的区别是什么
【10月更文挑战第23天】React和Vue之间的区别是什么
13 0
|
2月前
|
前端开发 JavaScript 开发者
React 和 Vue.js 框架的区别是什么?
React 和 Vue.js 框架的区别是什么?