Задать вопрос

Как проходит сравнение объектов в mapStateToProps?

Добрый день. Подскажите пожалуйста, как проходит сравнение объектов в mapStateToProps для определения того, нужно ли перерендерить компонент. Интересует вот такой случай. Есть в сторе стейт:

const state = {
    first: {
        second: {
            data: {
               a: 2, b: 3
            }
        }
    }
}


В mapStateToProps я получаю доступ к data и надеюсь, что когда у меня поменяется a или b то компонента перерендерится.

{
data: state.first.second.data
}

Понимаю, что будет сравниваться data, и при этом по ссылке. Но будут ли сравниваться first и second? Если нет, то зачем в reducer тогда рекомендуется делать копии на всех уровнях вложенности? Например, я хочу изменить a и мне нужно сначала сделать копию ...first, потом копию ...second и уже потом data: {...state.data, a}. Если у меня сравниваются между собой только ссылки на data, то я могу не делать копи на first и second? Или же сравнение происходит по-другому?
  • Вопрос задан
  • 215 просмотров
Подписаться 4 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@grinat
Там нет глубоко сравнения объекта, он проверяет тот ли это объекта, если другой вызовет всех подписчиков и будет перерендеринг, иначе ничего не случится.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы