Выбор ответа Middle Производительность и холодный старт обновлено

Списки в декларативном UI

Вопрос

Почему в списках Compose, SwiftUI, Flutter и React Native нужны стабильные ключи элементов?

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

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

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

Коротко

Правильный ответ: По ключам фреймворк сопоставляет элементы между обновлениями: без них пересоздаёт лишнее. Ключ это идентичность элемента.

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

  1. Без ключей список не скомпилируется: фреймворк требует идентичность каждого элемента
  2. По ключам фреймворк сопоставляет элементы между обновлениями: без них пересоздаёт лишнееправильный ответ
  3. Ключи нужны для сортировки: по ним фреймворк упорядочивает элементы при изменении данных
  4. Ключи ускоряют загрузку картинок, потому что кеш изображений использует их как имя файла

Разбор

Ключ это идентичность элемента. При вставке в начало без ключей все элементы «сдвигаются» и пересоздаются, с ключами фреймворк вставит один. Ключи из данных (id), а не индексы. Во многих API ключ необязателен, и код скомпилируется, но будет работать хуже. К сортировке и загрузке картинок ключи не относятся.

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

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