Я не знаю, почему даже я изменил черновик, immer предоставил мне не новое состояние, а старый экземпляр состояния с измененным содержимым.
import CartItem from "../../models/cart-item";
import * as actions from "../actions/actionTypes";
import produce from "immer"
const initialState = [];
const reducer = (state=initialState, action) => {
switch (action.type) {
case actions.ADD_TO_CART:
const {id, title, price} = action.product;
const itemIndexInCart = state.findIndex(item => item.id === id);
const nextState = produce(state, draftState => {
if (itemIndexInCart === -1) {
draftState.push(new CartItem(id, 1, price, title, price));
} else {
draftState[itemIndexInCart]['quantity']++;
draftState[itemIndexInCart]['sum'] += price;
}
});
console.log(state === nextState);
return nextState;
default:
return state;
}
};
export default reducer;
Он работает, когда новый элемент помещается в массив, но он не работает должным образом, когда я хочу изменить количество и сумму элемента массива. Журнал показывает мне, что при данных обстоятельствах это тот же объект.