Skip to main content

Command Palette

Search for a command to run...

React 入門 3 - Hooks 簡介

Updated
1 min readView as Markdown

前面鋪陳Function Components這麼久,終於來到Hooks!

Hooks出現前,React使用者都是用Class Components,但為了簡化Class Components複雜的寫法和設計,於是React 16.8 以後推出 Hooks!

在正式介紹Hooks的功能之前,我想用這篇來整理Hooks的特色和規則:

  1. Hooks 是 React 16.8 以後推出的功能
  2. Hooks 只能在Function Component裡面使用,這也是為什麼前面要先介紹 Function Component。
  3. Hooks 是一群 use 開頭的功能,例如接下來要入門的 useState、useEffect、useRef 等。
  4. 雖然建議新專案或是正在更新的專案使用 Hooks 來寫,但強調 Class Component目前沒有被刪掉的計畫,所以舊專案可以放心繼續使用Class Component。

另外官方也有提到:

不必為了使用Hooks,而硬是把目前的Class Components改成Function Component和Hooks的寫法。

我想是因為,

(1) 雖然 Hooks 整合了一些 Class Components 的生命週期方法,但官方文件提到有部分的生命週期方法還沒在 Hooks 實現;

(2) Hooks是用來簡化寫 Class Components 生命週期方法的思維, 所以改用 Hooks 基本上要拋開過去寫 Class Components 的邏輯。

接下來幾篇會依序介紹Hooks,最後統整兩個使用Hooks的重要規則:

  1. 再次強調,Hooks 只能出現在 Function Components 或者 Custom Hook 裡面
  2. Hooks 只能寫在頂層,也就是不能寫在像是條件判斷式(conditions)、迴圈(loop)或是巢狀函式(nested function)裡面;

總之,Hooks只能出現在 Function Components裡面的第一層。


References

2 views

More from this blog

Vite: vite-plugin-html的bugs和坑

因為工作要用Vite去生成一個mpa專案且根據頁面不同,動態生成不同 <title> 的HTML,所以就找了一個套件──vite-plugin-html,結果因為套件好像很久沒維護,隨著Vite升級又多了一些有的沒的bug,順手來記錄一下。 template delete 像我第一個就是遇到生成的時候template HTML也會被刪掉,後來看到issue上也有人反映,還好有好心人士解決這個問題,

Feb 26, 20261 min read4

Lun's Blog

82 posts

Notes for web development