react-hook-form 踩坑筆記
前言
在後台系統最大量使用的就是form了
React裡知名度較高的就是react-hook-form
與formik
原本還在猶豫該用哪一套
後來發現formik
似乎進入maintain了,而react-hook-form
下載量又較高
就無懸念直接使用react-hook-form
此套件算滿簡單易用,主要使用的function其實滿少的,建議快速過完一遍後再開始用
可以少踩一些坑…
比如下述幾點就是沒仔細過完官網就邊寫邊做,浪費了不少時間在試錯。殊不知官網就有答案了= =
唯獨第 1 點我在官網沒看到
重點
- 使用 zod 做表單驗證,無法使用自定義 validate。官網沒提到這塊,試了好久一註解
zodResolver
就一切正常… setError
僅針對該欄位增加error,若不額外處理按鈕阻檔,當 user 按下 submit,不會觸發 error,且會清空此錯誤狀態- 若要寫底層公用的欄位(如
TextInput.tsx
),推薦使用getFieldState(name).invalid
判斷錯誤狀態,會比errors[name]
來的有用。尤其在useFieldArray
使用到時,可以正確抓取錯誤,便於撰寫錯誤訊息 - 若欄位設定成disable,react-hook-form 會自動清掉欄位,若想保留,可以使用原生HTML的
fieldset
包住欄位,並將disabled
設置在fieldset
裡。但若是由defaultValue
直接提供所有內容,不受影響。也較推薦使用此方法