# Reflect.6. Заменяем компоненты — Mercury LMS > Контракт `@fiberfx/reflect` 4.1.1; Hypergraph и Hyperscript 4.1.1. ## Поддерживаемый приём Постоянный реестр вне рендера; в модели — имя; mapProps возвращает конструктор без изменений. ComponentType охватывает функции и классы. Для строк: mapItem передаёт item, mapProps RowView использует source:{} и props.item.kind. ## Вызываемые значения bind/mapItem оборачивают функции с привязкой к области. mapProps сохраняет идентичность конструктора и callback ref. Событие/эффект из проекции сохраняет методы, но не получает привязку вызова. Собственный useUnit потомка использует Provider в месте рендера; внешний связанный обработчик сохраняет прежнюю область. ## Наблюдение [Эксперимент](/examples/reflect-lab/index.html?part=components&lang=ru): увеличить краткий счётчик, сменить вид и вернуться. Каждая замена конструктора начинает локальное состояние заново. Тот же ключ и конструктор могут сохранить состояние; другой конструктор не переносит его. ## Ограничения Не создавать конструктор внутри проекции и не передавать его через bind/mapItem. Неизвестные имена отклонять или направлять в запасной вид после own-property проверки. Дескрипторов селекторов, слотов и пресетов здесь нет. Основание: composition.test.ts:43-138, Reflect.prompt.md:42-55; npm 4.1.1. ## Навигация - [HTML](/ru/reflect/components) - [Reflect](/ru/reflect/llms.txt) - [Index](/ru/llms.txt) - [Карта сайта](/sitemap.xml) - [Все английские версии для агентов](/llms-full.txt)