如果使用 react js 对象 属性 值不同,如何防止添加数据
How can I prevent to add data if the object property value is different using react js
我目前正在开发一个多供应商项目。我正在尝试添加一个功能,如果客户想从不同的供应商商店购买产品,它不会添加到购物车。他必须从同一个供应商处购物。
假设有两个供应商x和y。客户想从两家供应商商店购买,但功能不会尝试这样做,他必须需要从 x 商店或 y 商店购买。
我的添加到购物车功能已准备就绪,但我对如何应用 if 条件感到困惑。
我正在使用 redux 进行状态管理。这是我的购物车减速机
addToCart: (state: any, { payload }: { payload: any }) => {
const itemIndex = state.cart.findIndex(item => item._id === payload._id)
// here I am checking is the vendor already available into the cart or not
const isAlreadyVendor = payload?.vendor?.email ?? state.cart.findIndex(item => item.vendor.email === payload.vendor?.email)
// Need to make an if condition here but confused how it would be.
if (itemIndex >= 0) { // this will increase the quantity
state.cart[itemIndex].cartQuantity += 1
toast.info(`${payload.title} quantity increased`, {
position: 'bottom-left'
})
} else {
const newCart = { ...payload }
state.cart.push(newCart)
toast.success(`${payload.title} added to cart`, {
position: 'bottom-left'
})
}
localStorage.setItem("cartItems", JSON.stringify(state.cart));
}
在上面的代码中,有一个变量 isAlreadyVendor
它将 return -1 或 1。所以基本上我试图在 isAlreadyVendor
为 -1 时用户可以添加任何产品,但在第二次单击“立即购买”按钮后,该功能将检查 isAlreadyVendor
是 returning -1 或 1,如果 1 表示用户正尝试从同一供应商处购买,则第二个产品也将添加到购物车,但如果 isAlreadyVendor
return -1 那么什么都不会添加(我们可以显示警报)
// Every item in the cart needs to have the same vendor
// Also okay if the cart is empty.
const isSameVendor = state.cart.every(c => c.vendor.email === payload.vendor.email;
if (!isSameVendor) {
alert();
// Or maybe
clearCart();
}
我目前正在开发一个多供应商项目。我正在尝试添加一个功能,如果客户想从不同的供应商商店购买产品,它不会添加到购物车。他必须从同一个供应商处购物。
假设有两个供应商x和y。客户想从两家供应商商店购买,但功能不会尝试这样做,他必须需要从 x 商店或 y 商店购买。
我的添加到购物车功能已准备就绪,但我对如何应用 if 条件感到困惑。
我正在使用 redux 进行状态管理。这是我的购物车减速机
addToCart: (state: any, { payload }: { payload: any }) => {
const itemIndex = state.cart.findIndex(item => item._id === payload._id)
// here I am checking is the vendor already available into the cart or not
const isAlreadyVendor = payload?.vendor?.email ?? state.cart.findIndex(item => item.vendor.email === payload.vendor?.email)
// Need to make an if condition here but confused how it would be.
if (itemIndex >= 0) { // this will increase the quantity
state.cart[itemIndex].cartQuantity += 1
toast.info(`${payload.title} quantity increased`, {
position: 'bottom-left'
})
} else {
const newCart = { ...payload }
state.cart.push(newCart)
toast.success(`${payload.title} added to cart`, {
position: 'bottom-left'
})
}
localStorage.setItem("cartItems", JSON.stringify(state.cart));
}
在上面的代码中,有一个变量 isAlreadyVendor
它将 return -1 或 1。所以基本上我试图在 isAlreadyVendor
为 -1 时用户可以添加任何产品,但在第二次单击“立即购买”按钮后,该功能将检查 isAlreadyVendor
是 returning -1 或 1,如果 1 表示用户正尝试从同一供应商处购买,则第二个产品也将添加到购物车,但如果 isAlreadyVendor
return -1 那么什么都不会添加(我们可以显示警报)
// Every item in the cart needs to have the same vendor
// Also okay if the cart is empty.
const isSameVendor = state.cart.every(c => c.vendor.email === payload.vendor.email;
if (!isSameVendor) {
alert();
// Or maybe
clearCart();
}