Hook
在 React 中,Hook 是一種功能強大的新特性,它允許你在不編寫 class
的情況下使用 state 和其他 React 特性。自從 React 16.8 版本引入以來,Hook 成為了在 function component 中管理 state 和 side effects 的首選方式。
什麼是 Hook?
Hook 是 function,它允許 function component “勾住”(hook into)React 的狀態管理和生命週期功能。這裡的 “勾住” 指的是能夠直接訪問和操作這些核心功能,這在過去僅限 於 class component。
-
訪問 React 狀態(State):在 class component 中,你會使用
this.state
和this.setState
來管理狀態。但在 function component 中,沒有this
關鍵字,而是使用useState
這個 Hook 管理自己的內部狀態。 -
利用生命週期功能:在 class component 中,生命週期方法(如
componentDidMount
,componentDidUpdate
,componentWillUnmount
)用於在組件的不同階段執行代碼。function component 中沒有這些生命週期方法,但 useEffect 這個 Hook 提供了類似的功能。
Hook 的規則
只在最上層呼叫 Hook
不要在迴圈、條件判斷或巢狀函式中調用 Hook。這是為了確保 Hook 在每次組件渲染時都以相同的順序被調用,這對於 React 正確追踪 Hook 的狀態非常重要。
只在 React Function 中呼叫 Hook
不要在普通的 JavaScript function 中調用 Hook。如果你需要在一個自定義 function 中使用 Hook,那麼該 function 必須是一個自定義 Hook。