返回文章列表核心語法:
2026/4/22 React, 技術
React Hook Form:頂尖表單處理實戰
為什麼需要 React Hook Form?
在傳統 React 中處理表單(使用 useState),每當您在輸入框打一個字,整個組件就會重新渲染(Re-render)一次。當表單有 20、30 個欄位時,電腦會開始變慢,程式碼也會變得異常臃腫。
React Hook Form 的核心優勢:
- 效能頂尖:它採用 Uncontrolled (非受控) 組件的概念(底層主要是 useRef),打字時不會觸發組件重新渲染。
- 程式碼極簡:大幅減少 useState 與 onChange 的數量。
- 驗證簡單:內建強大的表單驗證功能,不需要自己寫一堆 if...else。
引入 React Hook Form
bash source casebash
核心語法:useForm()
這是該套件最主要的 Hook,執行後會回傳幾個重要的工具:
javascript source casejavascript
- register:這是一個函式,用來「登記」您的輸入框。它會自動幫您處理 name, onChange, onBlur 和 ref。
- handleSubmit:用來包裝您的提交函式,它會幫您執行 e.preventDefault() 並在驗證通過後才傳出資料。
- errors:存放所有驗證失敗的錯誤訊息。
範例:員工資料新增表單
javascript source casejavascript
為什麼要用 {...register}?
這是 JavaScript 的「展開運算子」。register 函式執行後會回傳一個物件,裡面包含:onChange,onBlur,ref,name。透過...展開,這四個屬性就會自動塞進您的<input />標籤裡。這就是為什麼您的程式碼會變得很乾淨的原因!
補充說明
括號裡面可以傳入一個設定物件(Configuration Object)。
- defaultValues (最常用:設定預設值)
在 ERP 中,這常用於「編輯現有資料」。您會先把從資料庫(PHP)抓回來的舊資料填進去。
- mode (決定何時檢查錯誤)
預設情況下,RHF 是在「按下送出 (Submit)」時才檢查錯誤。
- resolver (串接強大的驗證庫)
如果您覺得在 裡面寫一堆規則太亂,可以使用 來串接像 或 這種專門處理「驗證表單邏輯」的套件。
分享這篇技術心得 / Share
若這份筆記對您有所啟發,歡迎分享給更多同好。
延伸閱讀 / Related Cases
React
useEffect:與外部世界互動的橋樑
什麼是 useEffect? 當組件「渲染後」需要執行動作(如:抓取資料、訂閱事件、修改 DOM),就要用 useEffect。 useEffect 讓您在組件「渲染後」執行某些操作。這些操作通常不直接參與畫面繪製,而是與外部世界互動。 核心觀念: - React 的渲染過程應該是純粹的(輸入什麼
React
useRef:掌握 React 的「儲物櫃」與 DOM 操控
什麼是 useRef? useRef 回傳一個帶有 current 屬性的物件。它有兩個最主要的用途: 1. 存取 DOM 元素:直接抓取網頁上的 HTML 標籤(例如讓輸入框聚焦)。 2. 儲存「不需要渲染」的資料:存放在裡面的資料改變時,不會觸發組件重新渲染。 核心觀念: - 如果您希望