Выбор ответа Junior Списки и производительность спрашивают часто обновлено

FlatList: keyExtractor

Вопрос

Чат добавляет новые сообщения в начало списка. Почему ключ по индексу плох?

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

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

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

Коротко

Правильный ответ: Индексы сдвигаются, строки получают чужие данные и чужое состояние. Ключ связывает данные и экземпляр компонента.

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

  1. Индексы сдвигаются, строки получают чужие данные и чужое состояниеправильный ответ
  2. keyExtractor не принимает индексы, их нельзя использовать в качестве ключа
  3. Ключи по индексу вызывают ошибку компиляции TypeScript в FlatList
  4. Ничем не плох: индекс самый надёжный ключ, он всегда уникален в списке

Разбор

Ключ связывает данные и экземпляр компонента. Вставка в начало сдвигает индексы, и экземпляр, который показывал сообщение 1, получит сообщение 2: состояние строки (раскрыто, анимация, ввод) переедет, а React перерисует всё. Стабильный ключ это id сообщения. Индексы технически допустимы, но только для неизменяемых списков.

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

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

Термины по теме