useForm
from react-hook-form
formを作る時に使う最も基本的なhooks
docs
できることが多い
useForm()の引数でいくつかのoptionsを設定できる
useForm()の返り値として色々返ってくる
型
useForm<FormData>()
getValuesとwatchとuseWatachの使い分け
返り値
useFormのregister
unregister
いつ使うんだ #??
formState ref
formの状態をsubscribeして、errorの内容とかが見れる
呼び出す場所とかのルールが色々あるのでdocsを見たほうがいいmrsekut.icon*3
例えばこういう書き方はしてはいけない
code:NG.ts
return <button disabled={!formState.isDirty || !formState.isValid} />;
watch ref
getValuesとwatchとuseWatachの使い分け
getValues ref
getValuesとwatchとuseWatachの使い分け
handleSubmit ref
submitする時に使う
これも色々ルールがあるのでdocs見たほうがいいmrsekut.icon*4
reset
全てのfieldをresetする
引数に与えられたrecordをセットする
これも色々ルールがあるのでdocs見たほうがいいmrsekut.icon*4
resetField
個々のfieldをresetする
setValue
valueをset
https://react-hook-form.com/api/useform/setvalue
ルールが割とある
実行時に再renderingを引き起こすかどうかは条件がある
基本的には引き起こされない、という認識で良い
errorがある時や、formState.isDirty == trueにしたときは、引き起こされる
引数に{ shouldValidate: true }を指定すれば、validationされる
triggerしているのと同じ感じになる
これを指定しないとvalidationされない
rootから再renderingされてるっぽい
When an error is triggered by a value updateと書いてるので、なくてもtriggerされるはずなんだけどされない、よくわからんmrsekut.icon
recordをまるごとsetするにはどうしたらいいか?
reset(fields)を使う
名前がわかりにくいよねmrsekut.icon
setFocus
fieldにfocusする
control
RHFのControllerにわたすやつ
getFieldState
v7.25で入った
https://react-hook-form.com/api/useform/getfieldstate/
isDirty、isTouched、errorなどを返す
setError
手動でerrorを指定する
clearErrors
errorを消す
trigger
docs
手動でvalidationをtriggerさせる
配列を渡すことで、指定したfieldだけtriggerできる
rootから再renderingされてる
setErrorとは何が違うの #??
他のfieldの内容に依存するvalidationを作る時に便利?
https://github.com/react-hook-form/react-hook-form/blob/master/examples/V7/triggerFieldValidation.tsx
options
defaultValues
初期値
なんか色々書いているので読もうmrsekut.icon*3
shouldUnregister
わからん #??
shouldUseNativeValidation
browser native validationを有効にする
false,
delayError
undefined
validation関連のoptions
mode
どのタイミングでvalidationをするかを指定する
e.g. onSubmit, onChange, onTouched
reValidateMode
onSubmitの実行後、errorが出ている状態でのmode
どのタイミングでvalidation errorを更新するかを指定する
選択肢はmodeとほぼ同じ
これ、modeと分けてるんだmrsekut.icon
resolver
外部ライブラリを用いてvalidationする
shouldFocusError
validarion errorがある状態でsubmitした時に、errorがあるfieldにfocusさせる
criteriaMode
一つのfieldに複数のvalidation ruleを指定できるが、それを全部収集するか1つ目だけを収集するか
たぶん #??
context
resolver関連のなにか
よくわからん #??