程序员技术博客
返回文章列表
React

深入理解 React Hooks 的设计原理

加载中...

深入理解 React Hooks 的设计原理

Hooks 看起来是几个简单的函数调用,但背后依赖 React 内部的 Fiber 链表结构来记录状态。

为什么不能在条件语句里用 Hooks

每个组件的 Hooks 调用会按顺序存成一个链表,React 依赖调用顺序而不是变量名来匹配状态:

function useCustomHook() {
  const [state, setState] = useState(0); // 第 1 个 hook
  useEffect(() => {
    console.log(state);
  }, [state]); // 第 2 个 hook
}

如果某次渲染跳过了 useState,下一个 Hook 就会错位读取到别的状态。

useEffect 的执行时机

useEffect 的回调在浏览器完成绘制后异步执行,不会阻塞页面渲染,这也是它和 useLayoutEffect 的核心区别。

小结

  • Hooks 的顺序即身份
  • 副作用应该保持纯粹,避免在渲染阶段读写外部状态
  • 自定义 Hook 本质上是逻辑复用的约定,而非新特性

评论 (0)

加载评论中...