Реактивность
На предыдущих страницах описана работа с формами, получение и установка значений, работы с доступностью. Касаемо реактивности и взаимодействием с Vue описано в этой статье.
Реактивные значения
Для получения реактивного объекта формы воспользуйтесь хуком useFormValues(). Хук принимает единственный параметр экземпляр класса Form:
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>.
Примеры
Реактивное значение у формы
В данном примере мы напрямую передаём форму из которой будем получать значение.
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');Как не будет работать!
В следующем примере показано, как не будет работать вычисляемое значение.
const form = new Form()
const nameValue = ComputedValue('name'); // Ошибкаconst form = new Form()
const nameValue = ComputedValue('name'); // ОшибкаВ дочернем элементе
Если в родительском элементе у нас определён экземпляр Form, то в дочернем уже можно его не указывать:
// 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 и передать туда экземпляр формы.
const form = new Form();
const state = useFormState(form); // { changed, disabled }const form = new Form();
const state = useFormState(form); // { changed, disabled }Реактивное состояние имеет следующий интерфейс:
interface FormReactiveState {
changed: boolean,
disabled: boolean,
wait: boolean
}interface FormReactiveState {
changed: boolean,
disabled: boolean,
wait: boolean
}