Выбор ответа Junior Компоненты на практике обновлено

Производное состояние

Вопрос

Как лучше всего хранить отфильтрованный список задач, если есть todos и filter в состоянии?

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

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

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

Коротко

Правильный ответ: Вычислять при рендере: todos.filter(...), дорогое через useMemo. Отфильтрованный список полностью выводится из todos и filter, значит это не состояние.

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

  1. Вычислять при рендере: todos.filter(...), дорогое через useMemoправильный ответ
  2. Отдельным useState, обновлять в useEffect при смене todos или filter
  3. В useRef, чтобы изменение списка не вызывало лишний рендер
  4. В глобальном сторе рядом с todos, чтобы список был у всех

Разбор

Отфильтрованный список полностью выводится из todos и filter, значит это не состояние. Вычисление при рендере даёт один источник правды и всегда актуальный результат.

  • Эффект-синхронизатор даёт лишний рендер и кадр со старыми данными.
  • Ref не вызовет перерисовку при изменении.
  • Глобальный стор не нужен для локальной производной.

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

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