スキル一覧に戻る
HuynhSang2005

react-hook-form

by HuynhSang2005

0🍴 0📅 2026年1月25日
GitHubで見るManusで実行

SKILL.md


name: react-hook-form description: Pattern dùng react-hook-form + Shadcn Form + next-intl trong repo này (client forms, admin/forms).

Khi nào dùng

  • Form có input/validation client-side (login, admin create/edit).
  • Không dùng cho Server Components; form component sẽ là 'use client'.

Nguồn trong repo

  • Shadcn form wrapper (không sửa): apps/web/src/components/ui/form.tsx
  • Form thật (admin/blog): apps/web/src/components/admin/blog/post-form.tsx

Pattern chuẩn

  1. Khai báo schema Zod (ở apps/web/src/schemas/*) và type:
  • export type XxxFormData = z.infer<typeof xxxSchema>
  1. Trong Client Component:
  • const form = useForm<XxxFormData, unknown, XxxFormData>({ resolver: zodResolver(xxxSchema), defaultValues })
  1. Render với Shadcn Form components:
  • <Form {...form}> + <FormField name="..." render={({ field }) => (...) } />
  • Dùng <FormMessage /> để hiển thị lỗi.

i18n/UI

  • Text UI phải tiếng Việt và ưu tiên lấy từ next-intl:
    • const t = useTranslations('admin.blog')
  • Tránh hardcode English strings cho label/button/toast.

Mapping dữ liệu với DB

  • Dữ liệu đọc/ghi DB nên theo type Database['public']['Tables'][...]['Row'|'Insert'|'Update'].
  • Khi form có field nullable/optional, đồng bộ với Zod (optional().nullable()) và defaultValues (null/'' đúng ngữ nghĩa).

Common gotchas

  • defaultValues phải stable (đặc biệt khi edit). Nếu phụ thuộc post, set lại bằng form.reset(...) hoặc đảm bảo props ổn định.
  • Với boolean nullable từ DB, normalize về boolean trong form (ví dụ repo dùng allow_comments !== false).
  • Với UUID: dùng z.string().uuid() để match DB.

スコア

総合スコア

50/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です