UseFormikDemo
guarahooks/use-formik-demoFreeExample
use-formik's hook in action.
Install it
npx shadcn@latest add https://guarahooks.com/r/use-formik-demo.jsonSource
1'use client';23import React from 'react';45import { toast } from 'sonner';67import { Button } from '@/components/ui/button';8import {9 Card,10 CardContent,11 CardDescription,12 CardFooter,13 CardHeader,14 CardTitle,15} from '@/components/ui/card';16import { Input } from '@/components/ui/input';17import { Label } from '@/components/ui/label';1819import { useFormikHook } from '@/hooks/guarahooks/use-formik';2021interface FormValues {22 firstName: string;23 lastName: string;24}2526export default function UseFormikDemo() {27 const { values, errors, touched, handleChange, handleBlur, onSubmit } =28 useFormikHook<FormValues>({29 initialValues: { firstName: '', lastName: '' },30 validate: (values) => {31 const errors: Partial<FormValues> = {};3233 if (!values.firstName) {34 errors.firstName = 'First name is required';35 }3637 if (!values.lastName) {38 errors.lastName = 'Last name is required';39 }4041 return errors;42 },43 onSubmit: () => {}, // This will be overridden by our onSubmit handler44 });4546 const handleFormSubmit = (data: FormValues) => {47 console.log('Form Data:', data);48 toast.success(`Hello, ${data.firstName} ${data.lastName}!`);49 };5051 return (52 <form onSubmit={onSubmit(handleFormSubmit)} className="max-w-md w-full">53 <Card className="w-full">54 <CardHeader>55 <CardTitle>useFormik</CardTitle>56 <CardDescription>57 Simplified Formik usage with validation58 </CardDescription>59 </CardHeader>60 <CardContent className="space-y-4">61 <div className="grid gap-2">62 <Label htmlFor="firstName">First Name</Label>63 <Input64 id="firstName"65 name="firstName"66 value={values.firstName}67 onChange={handleChange}68 onBlur={handleBlur}69 />70 {touched.firstName && errors.firstName && (71 <p className="text-destructive">{errors.firstName}</p>72 )}73 </div>74 <div className="grid gap-2">75 <Label htmlFor="lastName">Last Name</Label>76 <Input77 id="lastName"78 name="lastName"79 value={values.lastName}80 onChange={handleChange}81 onBlur={handleBlur}82 />83 {touched.lastName && errors.lastName && (84 <p className="text-destructive">{errors.lastName}</p>85 )}86 </div>87// … truncated
What it pulls in
Other registry items
Files it writes
More from guarahooks
All 100 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| UseAbortControllerDemouse-abort-controller-demo | guarahooks | Examples | Free | no deps | |
| UseArrayStateDemouse-array-state-demo | guarahooks | Examples | Free | no deps | |
| UseAxiosDemouse-axios-demo | guarahooks | Examples | Free | no deps | |
| UseBatteryStatusDemouse-battery-status-demo | guarahooks | Examples | Free | no deps | |
| UseBetterAuthDemouse-better-auth-demo | guarahooks | Examples | Free | no deps | |
| UseClickOutsideDemouse-click-outside-demo | guarahooks | Examples | Free | no deps | |
| UseConfirmDemouse-confirm-demo | guarahooks | Examples | Free | no deps | |
| UseCookieDemouse-cookie-demo | guarahooks | Examples | Free | no deps |
