Skip to content

Реактивность

На предыдущих страницах описана работа с формами, получение и установка значений, работы с доступностью. Касаемо реактивности и взаимодействием с Vue описано в этой статье.

Реактивные значения

Для получения реактивного объекта формы воспользуйтесь хуком useFormValues(). Хук принимает единственный параметр экземпляр класса Form:

ts
import {Form, useFormValues} from "jenesius-vue-form";

const form = new Form();
const values = useFormValues(form); // Реактивный объект значений
import {Form, useFormValues} from "jenesius-vue-form";

const form = new Form();
const values = useFormValues(form); // Реактивный объект значений

Реактивное поля

Если вам необходимо отслеживать какое-то именное поле формы, воспользуйтесь ComputedValue. По умолчанию данная функция принимает два объекта: экземпляр класса Form и имя поля. Однако класс Form можно опустить, если необходимо получить значение из родительской формы.

Параметры

form Необязательное

Экземпляр класса Form у которого происходит отслеживание значения формы.

name Обязательное

Строковое название поля.

Возвращаемое значение

Функция вернёт Ref<any>.

Примеры

Реактивное значение у формы

В данном примере мы напрямую передаём форму из которой будем получать значение.

ts
import {Form, ComputedValue} from "jenesius-vue-form";

const form = new Form();
const nameValue = ComputedValue(form, 'name');
import {Form, ComputedValue} from "jenesius-vue-form";

const form = new Form();
const nameValue = ComputedValue(form, 'name');

Как не будет работать!

В следующем примере показано, как не будет работать вычисляемое значение.

ts
const form = new Form()
const nameValue = ComputedValue('name'); // Ошибка
const form = new Form()
const nameValue = ComputedValue('name'); // Ошибка

В дочернем элементе

Если в родительском элементе у нас определён экземпляр Form, то в дочернем уже можно его не указывать:

ts
// parent.vue
const form = new Form()

// child.vue
const ageValue = ComputedValue('age'); // Будет работать!
// parent.vue
const form = new Form()

// child.vue
const ageValue = ComputedValue('age'); // Будет работать!

Реактивное состояние

Для получения реактивного состояния формы(доступность, изменение) необходимо воспользоваться useFormState и передать туда экземпляр формы.

ts
const form = new Form();
const state = useFormState(form); // { changed, disabled }
const form = new Form();
const state = useFormState(form); // { changed, disabled }

Реактивное состояние имеет следующий интерфейс:

ts
interface FormReactiveState {
	changed: boolean,
	disabled: boolean,
	wait: boolean
}
interface FormReactiveState {
	changed: boolean,
	disabled: boolean,
	wait: boolean
}

Released under the MIT License.