Skip to content

Форма ​

Сбор данных и валидация. Логика валидации целиком состоит из чистых функций @lh-ui/share, нулевая зависимость от платформы, поведение одинаковое на обеих платформах.

Базовое использование ​

vue
<template>
  <lh-form :model="form" :rules="rules" ref="formRef" label-width="80">
    <lh-form-item label="Имя пользователя" prop="name">
      <lh-input v-model="form.name" placeholder="Введите имя пользователя" />
    </lh-form-item>
    <lh-form-item label="Эл. почта" prop="email">
      <lh-input v-model="form.email" placeholder="Введите эл. почту" />
    </lh-form-item>
    <lh-button type="primary" @click="onSubmit">Отправить</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: 'Введите имя пользователя', trigger: 'blur' }],
  email: [{ required: true, message: 'Введите эл. почту', trigger: 'blur' }],
}

const onSubmit = async () => {
  const ok = await formRef.value.validate()
  if (ok) {
    // Валидация пройдена, отправка
  }
}
</script>

Form Props ​

ПропОписаниеТипПо умолчанию
modelОбъект данных формы (обязательный)Record<string, unknown>—
rulesПравила валидации (ключи — имена prop)Record<string, LhFormRule[]>—
labelPositionПоложение метки'left' | 'right' | 'top''right'
labelWidthШирина меткиstring | number—
inlineСтрочная раскладкаbooleanfalse
customClassПользовательский классstring—
sxБыстрые свойства раскладкиLhSxProps—

Form Methods (вызываются через ref) ​

Вызов через ref — только после onReady

На этапе onLoad дочерние компоненты ещё не созданы, formRef.value — undefined. Клик по кнопке отправки естественным образом происходит после onReady, тут всё в порядке; если нужно вызвать метод при инициализации страницы — поместите вызов в onReady.

МетодОписаниеВозвращает
validateВалидирует все поляPromise<boolean> (true, если все проверки пройдены)
validateFieldВалидирует отдельное полеPromise<boolean>

FormItem Props ​

ПропОписаниеТипПо умолчанию
propКлюч поля (соответствует ключу в model и в rules)string—
labelТекст меткиstring—
requiredМаркер обязательного поля (показывает звёздочку; реальная валидация определяется rules)booleanfalse
rulesИндивидуальные правила поля (сливаются с rules формы)LhFormRule[]>—
customClassПользовательский классstring—

Отличия от версии для Vue3

  • Триггер валидации: у контролов Mini Program нет семантики change, поэтому каждый контроль формы отображает события blur / input на триггеры валидации.
  • Отправка формы: семантика формы в Mini Program иная, validate возвращает Promise<boolean> для ручной отправки, перехвата события submit как на web-стороне нет.