ja.conform.guide
Open in
urlscan Pro
2606:4700:3031::ac43:ac15
Public Scan
URL:
https://ja.conform.guide/
Submission: On March 25 via api from US — Scanned from US
Submission: On March 25 via api from US — Scanned from US
Form analysis
0 forms found in the DOMText Content
███████╗ ██████╗ ███╗ ██╗ ████████╗ ██████╗ ███████╗ ███╗ ███╗ ██╔═════╝ ██╔═══██╗ ████╗ ██║ ██╔═════╝ ██╔═══██╗ ██╔═══██╗ ████████║ ██║ ██║ ██║ ██╔██╗██║ ███████╗ ██║ ██║ ███████╔╝ ██╔██╔██║ ██║ ██║ ██║ ██║╚████║ ██╔════╝ ██║ ██║ ██╔═══██╗ ██║╚═╝██║ ╚███████╗ ╚██████╔╝ ██║ ╚███║ ██║ ╚██████╔╝ ██║ ██║ ██║ ██║ ╚══════╝ ╚═════╝ ╚═╝ ╚══╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ はじめに / 概要 はじめに * 概要 * チュートリアル * v1 へのアップグレード * GitHub ガイド * バリデーション * ネストされたオブジェクトと配列 * インテントボタン * アクセシビリティ * チェックボックスとラジオグループ * ファイルのアップロード インテグレーション * UI ライブラリ * Remix * Next.js API リファレンス * useForm * useField * useFormMetadata * useInputControl * FormProvider * FormStateInput ユーティリティ * getFormProps * getFieldsetProps * getInputProps * getSelectProps * getTextareaProps * getCollectionProps スキーマ関連 * parseWithZod * parseWithYup * getZodConstraint * getYupConstraint 概要 Conform は、Web 標準に基づいて HTML フォームを段階的に強化し、 Remix や Next.js のようなサーバーフレームワークを完全にサポートする、型安全なフォームバリデーションライブラリです。 #特徴 * プログレッシブエンハンスメント・ファーストな API * 型安全なフィールド推論 * きめ細やかなサブスクリプション * 組み込みのアクセシビリティ・ヘルパー * Zod による自動型強制 #THE GIST Conformは、クライアントからサーバーへのフォーム送信のライフサイクルを制御し、useForm() フックを通じてフォームの状態を提供します。フォームのマークアップを制限せず、有効なHTMLフォームであればどのようなものでも動作します。フォームの値は、FormData Web APIを使用してDOMから取得され、イベント委譲によって同期されます。 1import { useForm } from '@conform-to/react'; 2import { parseWithZod } from '@conform-to/zod'; 3import { z } from 'zod'; 4import { login } from './your-auth-library'; 5import { useActionResult, redirect } from './your-server-framework'; 6 7// フォームのスキーマを定義する 8const schema = z.object({ 9 username: z.string(), 10 password: z.string(), 11}); 12 13// Optional: サーバーアクションハンドラ 14export async function action({ request }) { 15 const formData = await request.formData(); 16 const submission = parseWithZod(formData, { schema }); 17 18 // ステータスが成功でない場合は、送信内容をクライアントに返送する 19 if (submission.status !== 'success') { 20 return submission.reply(); 21 } 22 23 const session = await login(submission.value); 24 25 // ログインに失敗した場合は、追加のエラーメッセージとともに送信内容を送る 26 if (!session) { 27 return submission.reply({ 28 formErrors: ['Incorrect username or password'], 29 }); 30 } 31 32 return redirect('/dashboard'); 33} 34 35// クライアントフォームコンポーネント 36export default function LoginForm() { 37 // サーバーアクションハンドラを定義している場合は、最後の送信結果を取得します。 38 // これはフレームワークによってはuseActionData()またはuseFormState()になります。 39 const lastResult = useActionResult(); 40 const [form, fields] = useForm({ 41 // 各フィールドをいつ検証するかを設定する 42 shouldValidate: 'onBlur', 43 // Optional: サーバー上で検証する場合のみ必要です。 44 lastResult, 45 // Optional: クライアント検証。提供されていない場合はサーバー検証にフォールバックします。 46 onValidate({ formData }) { 47 return parseWithZod(formData, { schema }); 48 }, 49 }); 50 51 return ( 52 <form method="post" id={form.id} onSubmit={form.onSubmit}> 53 <div>{form.errors}</div> 54 <div> 55 <label>Username</label> 56 <input type="text" name={fields.username.name} /> 57 <div>{fields.username.errors}</div> 58 </div> 59 <div> 60 <label>Password</label> 61 <input type="password" name={fields.password.name} /> 62 <div>{fields.password.errors}</div> 63 </div> 64 <button>Login</button> 65 </form> 66 ); 67} Type "/" to search ⚲ このページ * 特徴 * The Gist 関連リンク * このページを編集 © 2024 Edmund Hung