Выбор ответа Middle Производительность и холодный старт обновлено
Списки в декларативном UI
Вопрос
Почему в списках Compose, SwiftUI, Flutter и React Native нужны стабильные ключи элементов?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: По ключам фреймворк сопоставляет элементы между обновлениями: без них пересоздаёт лишнее. Ключ это идентичность элемента.
Варианты ответа
- Без ключей список не скомпилируется: фреймворк требует идентичность каждого элемента
- По ключам фреймворк сопоставляет элементы между обновлениями: без них пересоздаёт лишнееправильный ответ
- Ключи нужны для сортировки: по ним фреймворк упорядочивает элементы при изменении данных
- Ключи ускоряют загрузку картинок, потому что кеш изображений использует их как имя файла
Разбор
Ключ это идентичность элемента. При вставке в начало без ключей все элементы «сдвигаются» и пересоздаются, с ключами фреймворк вставит один. Ключи из данных (id), а не индексы. Во многих API ключ необязателен, и код скомпилируется, но будет работать хуже. К сортировке и загрузке картинок ключи не относятся.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.