0

我有一个产品,我想根据数量获得该产品的总价格,我正在使用 zustand 进行状态管理。

这是我用来更新状态的函数。

export const useCartProduct = create<CartProductsProp>(
  devtools(
    persist(
       (set) => ({
         incrementProductQuantity: (product: ProductProps) => {
          set((prev) => {
            console.log('@userQuantity-product', product.userQuantity);
            let currentCart = prev.cartProducts.map((cartProduct) =>
              cartProduct.id === product.id
                ? {
                    ...cartProduct,
                    userQuantity: cartProduct.userQuantity + 1,
                    productTotalPrice: cartProduct.userQuantity * cartProduct.price, // here's the issue "the userQuantity not updated and return the prev value".
                  }
                : cartProduct,
            );
            return {
              cartProducts: currentCart,
            };
          });
        },
      }),
    ),
  ),
);

这里的问题

  productTotalPrice: cartProduct.userQuantity * cartProduct.price

userQuantity未更新并返回上一个值”。

所以我尝试的是这样

  productTotalPrice: (cartProduct.userQuantity + 1) * cartProduct.price,

那是返回正确数量的“更新的”,那么其他方法可以解决它吗?

4

0 回答 0