alex4answ
@alex4answ

Почему useSelector возвращает разные объекты?

Добрый день, не могу разобраться в проблеме и понять в чем дело.

useSelector(state => state.dashboard);
Возвращает каждый раз "новый" объект, и выполняется повторный рендер.

state.dashboard не изменяется (изменяются другие части стора, редюсеры - чистые, все как и должно быть) в redux devtool видно что dashboard не изменяется,
Dashboard в state имеет интерфейс:
interface DashboardState {
  from: Date;
  to: Date;
}


Почему селектор возвращает новый объект?
Ведь я беру значения из store, не создавая нового объекта.

Если добавить shallowEqual, то все нормально и работает как и должно, никаких ре-рендеров

Либо если возвращать не целый объект, а все его части:
const from = useSelector(state => state.dashboard.from);
const to = useSelector(state => state.dashboard.to);

Все работает, но почему state.dashboard меняется, понять я не могу
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Corvuss
Там по умолчанию используется вроде бы строгое равенство для сравнения, поэтому объект всегда воспринимается как новый. shallowEqual как раз в данном случае подходит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы