4. 源碼解析類:《深入理解React Hooks:從使用到原理》
# 深入理解React Hooks:從使用到原理?? **背景**:
- Hooks解決了Class組件的哪些問題?
- 為什么不能在循環/條件中調用Hooks??? **核心原理**:### 1. Hooks鏈表
React內部維護一個單向鏈表:
fiber.memoizedState = {
memoizedState: 0, // useState的值
next: {
memoizedState: () => {…}, // useCallback的回調
next: {
memoizedState: [deps], // 依賴數組
next: null
}
}
}
### 2. 調用順序一致性
以下代碼會導致Hooks順序錯亂:
```jsx
function Component(props) {const [count, setCount] = useState(0) // Hook 1if (props.condition) {useEffect(() => {...}) // Hook 2(條件性調用)}const [name, setName] = useState('') // Hook 3// 條件為false時:Hook 2