Skip to content

useField

useField is a Vue Composition API hook for form field management, providing validation and state management for individual fields.

It helps you easily handle common scenarios such as: field validation, field state tracking, and value change callbacks.

Source code: GitHub

Usage

vue
<template>
  <see-form-item label="Username" field="username">
    <see-input v-model="formData.username" placeholder="Enter username" />
  </see-form-item>
</template>

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

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

const {
  validateStatus,
  validateMessage,
  validate,
  resetField,
  clearValidate,
  handleChange,
  handleBlur
} = useField({
  field: 'username',
  getValue: () => formData.username,
  trigger: 'blur',
  rules: [{ required: true, message: 'Username is required', trigger: 'blur' }],
  onValueChange: (value) => {
    formData.username = value
  }
})
</script>

Options

useField(options) accepts a configuration object as parameter:

ParameterDescriptionTypeDefault
fieldField name (required)string-
getValueFunction to get the current field value (required)() => unknown-
triggerValidation trigger mode'blur' | 'change''blur'
rulesField validation rulesFormRule | FormRule[][]
onValueChangeField value change callback(value: unknown) => void-

Return Value

useField returns an object containing field operation methods and state:

NameDescriptionType
validateStatusCurrent validation statusRef<'success' | 'error' | 'validating' | ''>
validateMessageCurrent validation error messageRef<string>
isValidatingWhether validation is in progressRef<boolean>
isDisabledWhether the field is disabledRef<boolean>
isReadonlyWhether the field is readonlyRef<boolean>
isShowMessageWhether to show validation error messagesRef<boolean>
validateValidate the field(trigger?: string) => Promise<ValidateResult>
resetFieldReset field value and validation state() => void
clearValidateClear field validation messages() => void
handleChangeHandle field value change (triggers change validation)(value: unknown) => void
handleBlurHandle field blur (triggers blur validation)() => void

Notes

  • useField automatically registers with the parent SeeForm component via provide/inject
  • If a name prop is provided on the form component, useField will automatically register the field for form-level validation
  • Validation rules can be defined at the field level via the rules option, or at the form level via the SeeForm rules prop
  • Field-level rules take priority over form-level rules

Liao ICP No. 2025070134