Выбор ответа Middle Compose: композиция и рекомпозиция спрашивают часто обновлено

Зачем key в LazyColumn

Вопрос

Зачем передавать key = { it.id } в items() у LazyColumn?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Состояние и анимации привязаны к элементу, а не к позиции; без ключа оно «съедет». Без ключа Compose идентифицирует элементы по позиции.

Варианты ответа

  1. Без ключа LazyColumn не отобразит элементы, если их больше одного экрана
  2. Ключ ускоряет загрузку данных из сети: Compose кеширует элементы по ключу
  3. Состояние и анимации привязаны к элементу, а не к позиции; без ключа оно «съедет»правильный ответ
  4. Ключ нужен для сортировки списка внутри LazyColumn по возрастанию id

Разбор

Без ключа Compose идентифицирует элементы по позиции. Если вставить элемент в начало, remember внутри строк окажется у соседей (например, развёрнутая карточка станет другой), а animateItem() не сработает. С уникальным стабильным ключом состояние следует за элементом. Список без ключа отображается, к сети и сортировке ключ отношения не имеет. Ключи должны быть уникальны и сохраняемы в Bundle.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.