Я отлаживаю проблему с производительностью в моем приложении. Мой компонент верхнего уровня App
выполняет рендеринг каждый раз, когда изменяется состояние Redux, даже если его props (из Redux) имеют одинаковые значения.
Передано 2 реквизита от Redux, один - строка, а другой - объект.
export default connect(state => ({
name: state.name, // This is a string
address: state.address // This is an object
}))(App);
Это address
(объект), который вызывает проблему. Правильно ли я думаю, что это потому, что функция Redux connect
выполняет поверхностное сравнение и думает, что address
изменился, поскольку это новый объект, даже если думал, что значения не изменились?
Предполагая, что этоправильно, я считаю, что решение заключается в том, чтобы либо запомнить address
, например, с помощью модуля повторного выбора, либо использовать shouldComponentUpdate
(что мне кажется более грязным). Я прав, что это 2 нормальных решения?