Overview
MKing Admin uses react-hook-form for performant, flexible form handling with built-in validation support. Forms are integrated with Material-UI components and use custom validation functions alongside pattern-based validation.Basic Form Setup
Simple Form Example
Product Form Example
The Product form demonstrates complex form handling with file uploads, multi-select fields, and custom validation.Form Interface
src/pages/Product/components/FormProduct.tsx
Form Initialization
src/pages/Product/components/FormProduct.tsx
Custom Validation Function
src/pages/Product/components/FormProduct.tsx
Form Submission
src/pages/Product/components/FormProduct.tsx
Form Field Types
Text Input
Number Input
src/pages/Product/components/FormProduct.tsx
Select Dropdown
src/pages/Product/components/FormProduct.tsx
Multi-Select with Chips
src/pages/Product/components/FormProduct.tsx
Switch/Toggle
src/pages/Product/components/FormProduct.tsx
Client Form with Validation Patterns
Pattern-Based Validation
src/pages/client/components/FormClient.tsx
Phone Number Field with Format Validation
src/pages/client/components/FormClient.tsx
Postal Code Field
src/pages/client/components/FormClient.tsx
Employee Form with Tabs
Multi-Tab Form Structure
- Setup
- Tab Panels
- Usage
src/pages/Employees/components/EmployeeFormDialog.tsx
Date Picker Integration
src/pages/Employees/components/EmployeeFormDialog.tsx
Complex Validation Patterns
src/pages/Employees/components/EmployeeFormDialog.tsx
Form Reset and Data Loading
Loading Existing Data
src/pages/Product/components/FormProduct.tsx
File Upload Handling
Image Upload Component
src/pages/Product/components/FormProduct.tsx
File Validation
src/pages/Product/components/FormProduct.tsx
Accordion Form Sections
src/pages/client/components/FormClient.tsx
Best Practices
Validation Strategy
Validation Strategy
- Use inline validation with react-hook-form rules for simple cases
- Implement custom validation functions for complex business logic
- Display errors immediately after field blur or on submit
- Provide helpful error messages in the user’s language
Performance Optimization
Performance Optimization
- Use Controller only when needed for complex integrations
- Register simple inputs directly without Controller
- Implement debouncing for expensive validations
- Reset forms properly to avoid memory leaks
User Experience
User Experience
- Show loading states during async operations
- Provide clear feedback on success/error
- Use appropriate input types (number, email, tel)
- Implement input masks for formatted fields
Accessibility
Accessibility
- Use proper ARIA labels
- Ensure keyboard navigation works
- Connect error messages to inputs
- Provide helpful placeholder text
Related Documentation
Component Overview
Learn about the overall component architecture
Data Grids
Explore AG Grid implementation patterns