viewProxy.ts
Назначение файла
Модуль реализует ViewProxy и функцию createViewProxy(), которые представляют view binding как управляемый программно объект.
Общая информация
ViewProxy особенно полезен для тестов и интеграционных адаптеров. Он эмулирует поведение представления: хранит props как атомы, отслеживает статус mount/update/unmount и рассылает lifecycle-события слушателям.
Концептуальная архитектура
Реализация состоит из следующих частей:
- Атом
statusхранит текущее состояние представления. - Для каждого initial prop создается source-атом, а наружу публикуется его read-only версия.
- Три
Emitter-экземпляра отвечают за событияmount,update,unmount. - Локальный
Scopeвладеет atom-ресурсами props и уничтожается вdestroy().
Методы mount(), update(), unmount() и destroy() синхронизируют внутреннее состояние и уведомляют подписчиков.
Описание публичного API
type ViewProxy<TProps>
- Расширяет
ViewBinding<TProps>. - Добавляет методы
mount(),update(props?),unmount(),destroy().
createViewProxy(): ViewProxy<Record<string, never>>
- Создает proxy без initial props.
createViewProxy<TProps>(initialProps: TProps): ViewProxy<TProps>
initialProps: начальные props представления.- Возвращает объект
ViewProxy<TProps>.
Примеры использования
ts
import { createViewProxy } from '@nrgyjs/core';
const view = createViewProxy({ id: '42' });
view.onMount(() => {
console.log(view.props.id());
});
view.mount();
view.update({ id: '43' });
view.destroy();