Я хочу реализовать программу корзины покупок redux с опцией reduct. страница cart.js
const addedIds = (state = initialState.addedIds, action) => {
switch (action.type) {
case ADD_TO_CART:
if (state.indexOf(action.productId) !== -1) {
return state
}
return [ ...state, action.productId ]
case REDUCT_FROM_CART:
return state.filter(productId => action.productId !== productId)
default:
return state
}
}
const quantityById = (state = initialState.quantityById, action) => {
switch (action.type) {
case ADD_TO_CART:
const{ productId } = action
return { ...state,
[productId]: (state[productId] || 0) + 1
}
case REDUCT_FROM_CART:
return { ...state,
[productId]: state[productId] - 1
}
default:
return state
}
}
& это страница ProductItem
const ProductItem = ({ product, onAddToCartClicked, onReductFromCartClicked }) => (
<div style = {{ marginBottom: 20 }}>
<Product
title = {product.title}
price = {product.price}
quantity = {product.inventory} />
<button
onClick = {onAddToCartClicked}
disabled = {product.inventory > 0 ? '' : 'disabled'}>
{product.inventory > 0 ? 'Add to cart' : 'Sold Out'}
</button>
<button
onClick = {onReductFromCartClicked}
disabled = {product.inventory < 0 ? 'disabled' :'' }>
{product.inventory < 0 ? 'No Item' : 'Reduct from cart' }
</button>
</div>
)
Какие все изменения заставляют эту программу правильно работать с функцией reduct? Нужно ли изменить какую-либо другую часть кода, а не приведенный выше код? Пожалуйста, помогите мне разобраться с этой проблемой. Спасибо





case REMOVE_TO_CART:
console.info("removed ADD");
return [ ...state.slice(0,state.indexOf(action.productId),
...state.slice(state.indexOf(action.productId)+1))
];
default:
return state
этот код может быть полезен для решения вашей проблемы
Спасибо, Лея. Но мне нужны полные изменения, которые я должен внести в свой код .. Кто-нибудь может мне помочь, пожалуйста ??