Я пытаюсь сделать задачу, при которой каждый клик будет «УВЕЛИЧЕНИЕ» + 1 номер товара в корзине. Но это не работает должным образом, и вместо этого я получил эту ошибку:
index. js: 1 Предупреждение: получено NaN для атрибута children
. Если это ожидается, приведите значение к строке.
Мой код здесь
const initialState = {
counter : 0,
cartData : []
};
function cartNumber(state = initialState, action) {
switch(action.type){
case "INCREMENT" :
var index = state.cartData.findIndex(el => el.name === action.newData.name);
var cartNumber = Number(state.counter);
if (index > -1) {
return {
...state,
cartData : state.cartData.map((el) => el.name === action.newData.name ? {...el, quantity : Number(el.quantity + 1), price : Number(el.price + el.total) } : el),
counter : Number(state.cartData.map((el) => Number(el.quantity))) + 1 // NOTE : **I think this line is the error, but i dont know how to fix it**
}
} else {
return {
...state, counter : Number(cartNumber + 1),
cartData : state.cartData.concat(action.newData)
}
}
break;
case "DECREMENT" :
if (state.cartData.quantity < 1) {
return {
...state,
cartData : state.cartData.map((el) =>
el.name === action.decrementData ? {...el, quantity: el.quantity !== 1 ? el.quantity - 1 : 1, price : el.price !== el.total ? el.price - el.total : el.price } : el)
}
} else {
return {
...state,
cartData : state.cartData.filter(el => el.name !== action.decrementData ),
counter : state.cartData.map((el) => el.name === action.decrementData ? state.counter - el.quantity : el)
}
}
default:
return state;
}
return state
}
export default cartNumber;
Я пытался исправить это, преобразовав все количество в число, но оно все еще не работает. Изначально это массив, потому что я взял из массива cartData, поэтому преобразовал его.