Всем привет. В редюсер добавляется товар. Количество единиц считается корректно. Проблема с подсчетом цены, вроде написано логично количество товара * стоимость одной единицы. Однако, происходит задержка изменения состояния и появляются неадекватные цифры. Изначально грешил на асинхронное обновления состояния. Опытным путем понял что я мутирую массив, если добавлять фиксированное число +1000, то все работает как часы. Почему так и как это исправить?
Редюсер
import {ADD_PRODUCT} from "./case";
const defaultState = {
products: []
}
// Редюсер для добавления товара в корзину
export const inCartReducer = (state = defaultState, action) => {
switch (action.type) {
case ADD_PRODUCT:
const item = state.products.find(n => n.id === action.payload.id);
return {
...state,
products: item
? state.products.map(n => n === item ? {...n, count: n.count + 1, price: n.price+1000} : n)
: [...state.products, {...action.payload, count: 1}]
};
default:
return state
};
};
// Чтение
const stateItem = {
items: [
{
id: 1,
img: "./source/popular/game_img1.jpg",
price: 1190,
old_price: "1980 ₽",
sale: -31,
description: "Взрывные ящерицы. Безумие, апокалипсис и хвостики",
}
]
}
Диспатч
const dispath = useDispatch();
const productCart = useSelector(state => state.inCart.products);
// Добавление продукта в корзину
const cart = (product) => {
dispath(addInCart(product));
}