Выбор ответа Junior Списки и производительность спрашивают часто обновлено
FlatList: keyExtractor
Вопрос
Чат добавляет новые сообщения в начало списка. Почему ключ по индексу плох?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Индексы сдвигаются, строки получают чужие данные и чужое состояние. Ключ связывает данные и экземпляр компонента.
Варианты ответа
- Индексы сдвигаются, строки получают чужие данные и чужое состояниеправильный ответ
keyExtractorне принимает индексы, их нельзя использовать в качестве ключа- Ключи по индексу вызывают ошибку компиляции TypeScript в
FlatList - Ничем не плох: индекс самый надёжный ключ, он всегда уникален в списке
Разбор
Ключ связывает данные и экземпляр компонента. Вставка в начало сдвигает индексы, и экземпляр, который показывал сообщение 1, получит сообщение 2: состояние строки (раскрыто, анимация, ввод) переедет, а React перерисует всё. Стабильный ключ это id сообщения. Индексы технически допустимы, но только для неизменяемых списков.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.