我正在练习 React,开发一个商店,以添加我使用此示例的购物车的功能。
但是在我的实现中,即使我的版本几乎相同,“添加到购物车”按钮也不会区分每个产品,这意味着:
- 第一次单击影响所有按钮,不仅单击的一个按钮和其他按钮更改为“添加更多”图例
- 每次后点击只会添加更多用户第一次点击的同类产品,如果点击另一个则忽略。
似乎是由 Reducer Function 中的突变引起的错误:
export const CartReducer = (state, action) => {
switch (action.type) {
case 'ADD_ITEM':
if (!state.cartItems.find((item) => item.id === action.payload.id)) {
//-------HERE
state.cartItems.push({
//mutation here?
...action.payload,
quantity: 1,
});
//-------
}
return {
...state,
...sumItems(state.cartItems),
cartItems: [...state.cartItems],
};
有什么替代方法?如何在没有突变的情况下推送状态中的项目?
完整的 te 文件在这里