Какие знаешь проблемы селекторов Redux

«Какие знаешь проблемы селекторов Redux» — вопрос из категории Библиотеки, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

  1. Избыточные ререндеры – селекторы без мемоизации вызывают пересчет при любом изменении стора, даже если их данные не изменились.
  2. Сложная логика в компонентах – без селекторов бизнес-логика часто дублируется в компонентах.
  3. Зависимости от структуры стора – изменение структуры Redux-стора ломает селекторы, если они не абстрагированы.

Решение:

  • Используйте reselect для мемоизации.
  • Декомпозируйте сложные селекторы на примитивные.
import { createSelector } from 'reselect';

const getUsers = state => state.users;
const getActiveFilter = state => state.filters.active;

export const getFilteredUsers = createSelector(
  [getUsers, getActiveFilter],
  (users, filter) => users.filter(user => user.status === filter)
);

Итог: Селекторы упрощают поддержку, но требуют мемоизации и грамотной структуры.