Встречается на собеседованиях • сегодня

В каких случаях useSelector будет вызывать перерисовку компонента

Компонент перерисуется, если возвращаемое значение useSelector изменилось по сравнению с предыдущим вызовом (проверка через ===).

Пример:

javascript
const count = useSelector(state => state.counter); // Перерисуется только если state.counter изменился

Важные моменты:

  1. Примитивы сравниваются по значению
  2. Объекты/массивы сравниваются по ссылке
  3. Новый объект в селекторе вызовет лишние ререндеры:
javascript
// ПЛОХО - создаёт новый объект при каждом вызове
const {a, b} = useSelector(state => ({a: state.a, b: state.b}));

// ХОРОШО - перерисуется только если изменится a или b
const a = useSelector(state => state.a);
const b = useSelector(state => state.b);

Для оптимизации можно использовать shallowEqual из react-redux или мемоизировать селекторы с помощью Reselect.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы