API リファレンス / useForm

useForm

HTML フォームを強化するためのフォームとフィールドのメタデータを返す React フックです。

1const [form, fields] = useForm(options);

#オプション

以下のオプションはすべて任意です。

id

フォーム要素に設定される id 属性です。提供されない場合は、代わりにランダムな id が生成されます。これは、各フィールドの id を生成するためにも使用されます。

lastResult

最後の送信の結果です。これは通常、サーバーから送信され、プログレッシブエンハンスメントのためのフォームの初期状態として使用されます。

defaultValue

フォームの初期値です。

constraint

各フィールドに設定されるバリデーション属性です。

shouldValidate

Conform が各フィールドのバリデーションを開始するタイミングを 3 つのオプションで定義します: onSubmit, onBlur,または onInput 。デフォルトは onSubmit です。

shouldRevalidate

フィールドがバリデーションされた後、Conform が各フィールドをいつ再バリデーションするかを定義します。デフォルトは shouldValidate の値です。

shouldDirtyConsider

Conform がフィールドをダーティ状態とみなすべきかどうかを定義します。例えば、 CSRF トークンのように Conform によって管理されていないフォームフィールドを除外する場合などです。

onValidate

フォームを(再)バリデーションする必要があるときに呼び出される関数です。

onSubmit

フォームが送信される前に呼び出される関数です。 onValidate が設定されている場合、クライアントバリデーションが成功した場合にのみ呼び出されます。

defaultNoValidate

DOM がハイドレートされる前に制約バリデーションを有効にします。デフォルトは true です。

#Tips

クライアントバリデーションは任意です。

Conform はクライアントバリデーションなしでライブバリデーション(つまり、ユーザーが入力から離れたときやタイプしたときにバリデーションする)をサポートしています。これは、バリデーションコードをクライアントバンドルに含めないようにするために便利です。ただし、ネットワークの遅延や、ユーザーがサーバーにアクセスする頻度(特にタイプするたびに再バリデーションする場合)を考慮することが重要です。

id が変更されたときに自動的にフォームをリセットします。

異なる iduseForm フックに渡してフォームをリセットすることができます。これは、同じフォームを持つ別のページにナビゲートするときに便利です(例: /articles/foo から /articles/bar へ)。

1interface Article {
2  id: string;
3  title: string;
4  content: string;
5}
6
7function EditArticleForm({ defaultValue }: { defaultValue: Article }) {
8  const [form, fields] = useForm({
9    id: `article-${defaultValue.id}`,
10    defaultValue,
11  });
12
13  // ...
14}