Перейти к основному содержимому

FormSubmitter

Defined in: core/utils/form-submitter.ts:70

FormSubmitter - управляет процессом отправки формы

Example

const submitter = new FormSubmitter(form);

// Простой submit
const result = await submitter.submit(async (values) => {
return await api.saveForm(values);
});

// Проверка состояния
if (submitter.submitting.value) {
console.log('Форма отправляется...');
}

Type Parameters

T

T extends FormFields

Constructors

Constructor

new FormSubmitter<T>(form): FormSubmitter<T>;

Defined in: core/utils/form-submitter.ts:80

Parameters

form

SubmittableForm<T>

Форма для отправки

Returns

FormSubmitter<T>

Methods

isSubmitting()

isSubmitting(): boolean;

Defined in: core/utils/form-submitter.ts:202

Проверить, идет ли отправка формы

Returns

boolean


submit()

submit<R>(onSubmit, options?): Promise<R | null>;

Defined in: core/utils/form-submitter.ts:110

Отправить форму

Процесс:

  1. Помечает все поля как touched (для отображения ошибок)
  2. Валидирует форму
  3. Если валидация успешна - вызывает onSubmit
  4. Управляет состоянием submitting

Type Parameters

R

R

Parameters

onSubmit

(values) => R | Promise<R>

Callback для отправки данных

options?

SubmitOptions

Опции submit

Returns

Promise<R | null>

Результат от onSubmit или null если валидация не пройдена

Example

const result = await submitter.submit(async (values) => {
const response = await fetch('/api/form', {
method: 'POST',
body: JSON.stringify(values)
});
return response.json();
});

if (result === null) {
console.log('Форма не прошла валидацию');
}

submitWithResult()

submitWithResult<R>(onSubmit, options?): Promise<SubmitResult<R>>;

Defined in: core/utils/form-submitter.ts:164

Отправить форму с расширенным результатом

В отличие от submit(), возвращает объект с информацией об успехе/ошибке

Type Parameters

R

R

Parameters

onSubmit

(values) => R | Promise<R>

Callback для отправки данных

options?

SubmitOptions

Опции submit

Returns

Promise<SubmitResult<R>>

Объект SubmitResult с данными и статусом

Example

const result = await submitter.submitWithResult(async (values) => {
return await api.saveForm(values);
});

if (result.success) {
console.log('Сохранено:', result.data);
} else if (result.error) {
console.error('Ошибка:', result.error.message);
} else {
console.log('Валидация не пройдена');
}

Properties

submitting

readonly submitting: ReadonlySignal<boolean>;

Defined in: core/utils/form-submitter.ts:75

Публичный read-only сигнал состояния отправки