Skip to content

useForm

useForm is a Vue Composition API hook for form management, providing form data binding, validation, reset and other capabilities.

It helps you easily handle common scenarios such as: form data management, form validation, field linkage, and form reset.

Source code: GitHub

Usage

vue
<template>
  <see-form ref="formRef" :model="formData" :rules="rules">
    <see-form-item label="Username" field="username">
      <see-input v-model="formData.username" placeholder="Enter username" />
    </see-form-item>
    <see-form-item label="Email" field="email">
      <see-input v-model="formData.email" placeholder="Enter email" />
    </see-form-item>
    <see-form-item>
      <see-button type="primary" @click="handleSubmit">Submit</see-button>
      <see-button @click="handleReset">Reset</see-button>
    </see-form-item>
  </see-form>
</template>

<script setup>
import { reactive } from 'vue'
import { useForm } from 'see-u-ui'

const formData = reactive({
  username: '',
  email: ''
})

const rules = {
  username: [{ required: true, message: 'Username is required', trigger: 'blur' }],
  email: [{ required: true, message: 'Email is required', trigger: 'blur' }]
}

const { validate, resetFields, clearValidate } = useForm({
  model: formData,
  rules
})

const handleSubmit = async () => {
  const result = await validate()
  if (result.valid) {
    console.log('Validation passed', formData)
  } else {
    console.log('Validation failed', result.errors)
  }
}

const handleReset = () => {
  resetFields()
}
</script>

Options

useForm(options) accepts a configuration object as parameter:

ParameterDescriptionTypeDefault
modelForm data object (required)Record<string, unknown>-
rulesValidation rulesRecord<string, FormRule | FormRule[]>{}
labelPositionLabel position'left' | 'right' | 'top''right'
labelWidthLabel widthstring | number'auto'
isDisabledDisable the entire formbooleanfalse
isReadonlySet the entire form to readonlybooleanfalse
isRequiredAsteriskShow required asteriskbooleantrue
isShowMessageShow validation error messagesbooleantrue
isInlineInline modebooleanfalse
sizeSize'small' | 'default' | 'large''default'

Return Value

useForm returns an object containing form operation methods:

MethodDescriptionParametersReturn Value
validateValidate the entire form-Promise<ValidateResult>
validateFieldValidate specified fieldsfields: string | string[]Promise<ValidateResult>
resetFieldsReset form field valuesfields?: string | string[]void
clearValidateClear validation messagesfields?: string | string[]void
scrollToFieldScroll to specified fieldfield: stringvoid
getFieldsValueGet all field values-Record<string, unknown>
setFieldsValueSet field valuesvalues: Record<string, unknown>void

FormRule Type

PropertyDescriptionType
requiredWhether the field is requiredboolean
messageError messagestring
triggerValidation trigger'blur' | 'change'
minMinimum value / lengthnumber
maxMaximum value / lengthnumber
lenExact lengthnumber
patternRegex patternRegExp
typeValue type'string' | 'number' | 'boolean' | 'array' | 'object' | 'date' | 'url' | 'email'
validatorCustom sync validator(value: unknown, rule: FormRule) => boolean | string
asyncValidatorCustom async validator(value: unknown, rule: FormRule) => Promise<boolean | string>

ValidateResult Type

PropertyDescriptionType
validWhether validation passedboolean
errorsList of validation errorsValidateError[]
errorFieldsErrors grouped by field nameRecord<string, ValidateError[]>

Liao ICP No. 2025070134