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

FlatList: мемоизация строк

Вопрос

Какое изменение обычно даёт наибольший эффект для медленного FlatList с тяжёлыми строками?

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

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

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

Коротко

Правильный ответ: Обернуть строку в memo и передавать стабильные пропсы. При любом обновлении списка (новая страница, изменение одного элемента) немемоизированные строки перерисовываются все. memo со стабильными пропсами оставляет перерисовку только изменившимся.

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

  1. Обернуть строку в memo и передавать стабильные пропсыправильный ответ
  2. Заменить FlatList на ScrollView, он проще и рендерит быстрее
  3. Увеличить initialNumToRender до 100, чтобы всё было готово заранее
  4. Убрать keyExtractor, тогда список не тратит время на вычисление ключей

Разбор

При любом обновлении списка (новая страница, изменение одного элемента) немемоизированные строки перерисовываются все. memo со стабильными пропсами оставляет перерисовку только изменившимся. ScrollView уберёт виртуализацию. Большой initialNumToRender замедлит первый рендер. Без стабильных ключей станет только хуже.

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

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

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