Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[历史博客]useEffect和useLayoutEffect,有何不同 #47

Open
z0nka1 opened this issue Feb 7, 2021 · 0 comments
Open

[历史博客]useEffect和useLayoutEffect,有何不同 #47

z0nka1 opened this issue Feb 7, 2021 · 0 comments

Comments

@z0nka1
Copy link
Owner

z0nka1 commented Feb 7, 2021

来自我的早期博客,出处:https://z0nka1.github.io/

在React里面,有这么两个hook:useEffectuseLayoutEffect,他们的作用很相似。

但他们并不是完全相同,本文通过实例的对比,让你清楚看到他们之间不一样的地方。

useEffect和useLayoutEffect的不同之处

这一切的不同,都是在————时间上。

useEffect:

useEffect是异步的。换句话说,它不会阻塞其他的任务。

看起来就像这样:

  1. 你以某种方式触发页面渲染(比如setState
  2. React渲染页面
  3. 页面更新(视觉上)
  4. 运行useEffect

useLayoutEffect

useLayoutEffect是同步的,或者说,阻塞?React是执行完useLayoutEffect,然后才会去更新页面的。

看起来就像这样:

  1. 你以某种方式触发页面渲染(比如setState
  2. React渲染页面
  3. 运行useLayoutEffect,然后React等它执行完
  4. 页面更新(视觉上)

什么时候用useEffect,什么时候用useLayoutEffect?

这么说吧,90%的情况都是使用useEffect

这里有两个在线实例,去玩一下,相信你就会知道什么时候用哪个了:

在页面上点击,看到区别了吗?

useEffect,页面会闪一下,而useLayoutEffect却不会有这种情况。

以上就是本文全部内容了,感谢阅读!

@z0nka1 z0nka1 changed the title useEffect和useLayoutEffect,有何不同 [历史博客]useEffect和useLayoutEffect,有何不同 Feb 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant