Проблема - мой компонент обновляется, даже если входные данные не изменились, и я подозреваю, что это из-за изменения ссылки на объект при глубоком сравнении.
У меня есть редуктор, например, так:
const getDefaultState = () => ({
mainNotifMessage: '(unknown message)',
notifDetails: '(unknown notification details)',
snackBarOpen: true
});
export type CPAction = {type: string, val: object}
export const notifsReducer = (state = getDefaultState(), action: CPAction) => {
switch (action.type) {
case c.NOTIFY_ERROR:
return {
...state,
...action.val
};
default:
return {
...state
};
}
};
, а затем в компоненте, который у меня есть:
function mapStateToProps(state: RootState) {
return {
notifs: state.notifs
};
}
Я думаю, что происходит, что state.notif всегда получает новую ссылку на объект, поэтому React / Redux всегда обновляет мой компонент, даже если нет изменений. Но если я изменю это на:
function mapStateToProps(state: RootState) {
return {
mainNotifMessage: state.notifs.mainNotifMessage,
snackBarOpen: state.notifs.snackBarOpen,
severity: state.notifs.severity,
notifDetails: state.notifs.notifDetails
};
}
, тогда он не обновит компоненты. Есть ли способ заставить Redux / React всегда выполнять глубокое сравнение и не возвращать рано при разнице ссылок на объекты?