Hooks解决了什么问题?
- 更好的逻辑组织和代码分离:Hooks 允许开发者按照逻辑关系而非生命周期方法来组织代码,这使得相关代码更加集中和一致,提高了代码的可维护性。
- Hoc 高阶组件,render props 使得使组件结构复杂化。复杂组件变得难以理解。
- 在函数组件中使用状态和其他 React 特性: 扩展了函数组件的功能。
useEffect 和 useLayoutEffect 有什么区别?
两者的主要区别在于执行时机:useEffect 在所有的 DOM 更改之后异步执行,不会阻塞页面渲染,而 useLayoutEffect 则在 DOM 更新之后立即同步执行,适用于对 DOM 布局和样式有影响的操作。在大多数情况下,useEffect 已足够使用,但在需要同步更改 DOM 或者避免闪烁时,应该使用 useLayoutEffect
setState到底是同步还是异步
react18之前。
setState在不同情况下可以表现为异步或同步。
在Promise的状态更新、js原生事件、setTimeout、setInterval..中是同步的。
在react的合成事件中,是异步的。
react18之后。
setState都会表现为异步(即批处理)。
