Skip to content

Formulario ​

Recogida y validación de datos. La lógica de validación está íntegramente en funciones puras de @lh-ui/share, sin dependencias de plataforma, de modo que el comportamiento es idéntico en ambas plataformas.

Uso básico ​

vue
<template>
  <lh-form :model="form" :rules="rules" ref="formRef" label-width="80">
    <lh-form-item label="Nombre de usuario" prop="name">
      <lh-input v-model="form.name" placeholder="Escribe el nombre de usuario" />
    </lh-form-item>
    <lh-form-item label="Correo electrónico" prop="email">
      <lh-input v-model="form.email" placeholder="Escribe el correo electrónico" />
    </lh-form-item>
    <lh-button type="primary" @click="onSubmit">Enviar</lh-button>
  </lh-form>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const form = ref({ name: '', email: '' })
const formRef = ref()

const rules = {
  name: [{ required: true, message: 'Escribe el nombre de usuario', trigger: 'blur' }],
  email: [{ required: true, message: 'Escribe el correo electrónico', trigger: 'blur' }],
}

const onSubmit = async () => {
  const ok = await formRef.value.validate()
  if (ok) {
    // Validación superada: enviar
  }
}
</script>

Form Props ​

PropDescripciónTipoPredeterminado
modelObjeto de datos del formulario (obligatorio)Record<string, unknown>—
rulesReglas de validación (las claves son los nombres de las props)Record<string, LhFormRule[]>—
labelPositionPosición de la etiqueta'left' | 'right' | 'top''right'
labelWidthAncho de la etiquetastring | number—
inlineDisposición en líneabooleanfalse
customClassClase personalizadastring—
sxProps rápidas de disposiciónLhSxProps—

Form Methods (se llaman mediante ref) ​

Las llamadas a ref deben hacerse después de onReady

En la fase onLoad los subcomponentes aún no se han terminado de crear y formRef.value es undefined. El evento de clic del botón de envío se produce, naturalmente, después de onReady, de modo que su uso directo no presenta problemas; si necesitas llamarlo durante la inicialización de la página, colócalo dentro de onReady.

MétodoDescripciónDevuelve
validateValida todos los camposPromise<boolean> (true cuando todos superan la validación)
validateFieldValida un único campoPromise<boolean>

FormItem Props ​

PropDescripciónTipoPredeterminado
propNombre clave del campo (corresponde a la clave de model y a la de rules)string—
labelTexto de la etiquetastring—
requiredMarca de obligatorio (muestra el asterisco; la validación real la deciden las rules)booleanfalse
rulesReglas exclusivas de este campo (se fusionan con las rules de Form)LhFormRule[]>—
customClassClase personalizadastring—

Diferencias frente a la versión Vue3

  • Disparo de la validación: los controles del Mini Programa no tienen semántica change, de modo que cada control de formulario mapea los eventos blur / input como disparadores de la validación.
  • Envío del formulario: la semántica de formulario del Mini Programa es distinta; validate devuelve un Promise<boolean> para el envío manual, sin la intercepción del evento submit de la versión web.