# Reflect.4. Сохраняем строки по ключам — Mercury LMS > Контракт `@fiberfx/reflect` 4.1.1; Hypergraph и Hyperscript 4.1.1. ## Контракт list({source, view, getKey?, mapItem?, bind?, mapProps?, hooks?}) возвращает компонент. Источник хранит массив, включая readonly. Устойчивый ключ сохраняет DOM и локальное состояние; без getKey идентичность определяется позицией. mapItem заменяет свойства элемента. Возвращённые функции и функциональные свойства прямого объекта оборачиваются с привязкой к области. Обязательные свойства должны быть покрыты. Пересечение mapItem/mapProps запрещено. Объединения передавать целиком или одним свойством item. ## Ключи и отказы После String(key) значения 1 и "1" совпадают; "01" остаётся отдельным ключом. Неверные ключи, состояние не-массив и примитивы без отображения отклоняются пакетом. В [эксперименте](/examples/reflect-lab/index.html?part=lists&lang=ru) дубликат отклоняет приложение до рендера. ## Наблюдение Отметить Alpha, развернуть, удалить Beta: Alpha сохраняет отметку и меняет позицию. Идентичность DOM проверять отдельно. Удаление и восстановление создают новое локальное состояние. Общий перезапуск очищает его; сброс данных модели сам по себе этого не обещает. ## Навигация - [HTML](/ru/reflect/lists) - [Reflect](/ru/reflect/llms.txt) - [Index](/ru/llms.txt) - [Карта сайта](/sitemap.xml) - [Все английские версии для агентов](/llms-full.txt)