如果使用 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();
}