Выбор ответа Middle Compose: композиция и рекомпозиция спрашивают часто обновлено
Зачем key в LazyColumn
Вопрос
Зачем передавать key = { it.id } в items() у LazyColumn?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Состояние и анимации привязаны к элементу, а не к позиции; без ключа оно «съедет». Без ключа Compose идентифицирует элементы по позиции.
Варианты ответа
- Без ключа
LazyColumnне отобразит элементы, если их больше одного экрана - Ключ ускоряет загрузку данных из сети: Compose кеширует элементы по ключу
- Состояние и анимации привязаны к элементу, а не к позиции; без ключа оно «съедет»правильный ответ
- Ключ нужен для сортировки списка внутри
LazyColumnпо возрастанию id
Разбор
Без ключа Compose идентифицирует элементы по позиции. Если вставить элемент в начало, remember внутри строк окажется у соседей (например, развёрнутая карточка станет другой), а animateItem() не сработает. С уникальным стабильным ключом состояние следует за элементом. Список без ключа отображается, к сети и сортировке ключ отношения не имеет. Ключи должны быть уникальны и сохраняемы в Bundle.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.