【发布时间】:2021-02-07 06:06:30
【问题描述】:
我正在使用 redux 和 lodash 将商品添加到购物车。由于某种原因,它重复了该条目。所以我在购物车对象和 cart.items 对象中有相同的项目
我的减速机:
const INITIAL_STATE = {
items: {},
count: null
}
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case actionTypes.ADD_CART_ITEM:
return { ...state, ..._.merge(state.items, { [action.payload.id]: action.payload }) }
default:
return state
}
}
我的行动
export const addCartItem = (item) => {
return {
type: actionTypes.ADD_CART_ITEM,
payload: item
}
}
我要添加到购物车的功能
addToCart() {
const { selectedSize, selectedShade, selectedQuantity } = this.props.product
const { id, sku } = this.props.product.product
if (selectedSize && selectedShade && selectedQuantity) {
const item = {
id: id,
sku: sku,
size: selectedSize,
shade: selectedShade,
quantity: selectedQuantity
}
this.props.addCartItem(item)
} else {
console.log('you need to select product attributes')
}
}
添加项目后我的 Redux 状态
cart: {
'1': {
id: 1,
sku: '7620896024640',
size: {
id: 2,
name: 'Medium',
prefix: 'M'
},
shade: {
id: 3,
name: 'Blue',
prefix: 'Blue',
color: 'blue'
},
quantity: 3
},
'9': {
id: 9,
sku: '9125620808537',
size: {
id: 2,
name: 'Medium',
prefix: 'M'
},
shade: {
id: 1,
name: 'Red',
prefix: 'Red',
color: 'red'
},
quantity: 1
},
items: {
'1': {
id: 1,
sku: '7620896024640',
size: {
id: 2,
name: 'Medium',
prefix: 'M'
},
shade: {
id: 3,
name: 'Blue',
prefix: 'Blue',
color: 'blue'
},
quantity: 3
},
'9': {
id: 9,
sku: '9125620808537',
size: {
id: 2,
name: 'Medium',
prefix: 'M'
},
shade: {
id: 1,
name: 'Red',
prefix: 'Red',
color: 'red'
},
quantity: 1
}
}
}
【问题讨论】: