# Reflect.5. Выбираем представление — Mercury LMS > Контракт `@fiberfx/reflect` 4.1.1; Hypergraph и Hyperscript 4.1.1. ## Контракт Строковая форма: variant({source, cases, default?}); логическая: variant({if, then, else?}). Обе поддерживают bind/mapProps/hooks. Нет ветви или false без else — запасной вариант либо null. Учитываются только собственные имена ветвей; constructor не берётся из прототипа. ## Время жизни Хуки variant принадлежат связанной обёртке. Смена ветви не перезапускает их, хотя выбранный потомок может смениться. Работа конкретной ветви относится к её компоненту. ## Практика и граница [Эксперимент](/examples/reflect-lab/index.html?part=variants&lang=ru): готово → пусто → ошибка → constructor, затем сброс. Запасной вариант — нормальное поведение выбора, а не исключение валидации и не свидетельство выполнения запроса. ## Основание variant.ts:10-61; variant.test.ts:52-76; collections.test.ts:77-80. npm 4.1.1. ## Навигация - [HTML](/ru/reflect/variants) - [Reflect](/ru/reflect/llms.txt) - [Index](/ru/llms.txt) - [Карта сайта](/sitemap.xml) - [Все английские версии для агентов](/llms-full.txt)