Не используйте push
при обновлении вашего состояния.Используйте concat
Я сталкиваюсь с этой действительно странной проблемой, рассмотрим этот редуктор:
export default function(state = null, action) {
console.log("Current State: ",state);
// on performing actions, it gives me:
// Current State: null
// Current State: Array [{}]
// Current State: Array [{}] -- all good
if(state === null) {
state = [
{id: 1, title: "Java"}
];
}
// UPDATED PART. FORGOT TO MENTION IT BEFORE
if(Action.type == "UPDATE_LIST") {
state.push( Action.payload ); // don't do that, this'll mutate your array and states are immutable
}
/////////////
return state; // this is the main problem
}
Приведенный выше код не вызывает mapStateToProps
внутри моего компонента.Однако изменение вышеуказанного редуктора, как показано ниже, вызывает mapStateToProps
:
return []; // instead of return state;
ИЛИ
return [ {id: 1, title: "Python"} ]; // instead of return state;
Я возвращаю instanceof Array в обоих случаях [state & []],но только последний вызывает в моем компоненте mapStateToProps
.
Это странно, и я понятия не имею, что мне делать, чтобы это исправить.