Выбор ответа Junior Компоненты на практике обновлено
Производное состояние
Вопрос
Как лучше всего хранить отфильтрованный список задач, если есть todos и filter в состоянии?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Вычислять при рендере: todos.filter(...), дорогое через useMemo. Отфильтрованный список полностью выводится из todos и filter, значит это не состояние.
Варианты ответа
- Вычислять при рендере:
todos.filter(...), дорогое черезuseMemoправильный ответ - Отдельным
useState, обновлять вuseEffectпри сменеtodosилиfilter - В
useRef, чтобы изменение списка не вызывало лишний рендер - В глобальном сторе рядом с
todos, чтобы список был у всех
Разбор
Отфильтрованный список полностью выводится из todos и filter, значит это не состояние. Вычисление при рендере даёт один источник правды и всегда актуальный результат.
- Эффект-синхронизатор даёт лишний рендер и кадр со старыми данными.
- Ref не вызовет перерисовку при изменении.
- Глобальный стор не нужен для локальной производной.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.