WooCommerce 文档

title: "购物车商店 (wc/store/cart)" post_status: publish comment_status: open taxonomy: category: - woocommerce post_tag: - Data Store - Reference - Block Development


购物车商店 (wc/store/cart)

💡 购物车商店和结账商店有什么区别?

购物车商店 (wc/store/cart) 用于管理和检索关于购物车的的数据,包括商品、客户数据以及与优惠券相关的交互。

结账商店 (wc/store/checkout) 用于管理和检索与结账过程相关的数据,包括客户 ID、订单 ID 和结账状态。

概述

购物车商店提供了一组选择器和方法,用于管理和检索 WooCommerce Blocks 中与购物车相关的数据。它提供了从获取购物车详情到管理客户交互的功能,例如应用优惠券或更新配送信息。

使用方法

要使用此商店,您需要在任何引用它的模块中导入 cartStore StoreDescriptor。 假设 @woocommerce/block-data 已注册为指向 wc.wcBlocksData 的外部,您可以通过以下方式导入 StoreDescriptor

const { cartStore } = window.wc.wcBlocksData;

操作

setCartData

此操作用于在商店中设置购物车数据。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( setCartData( newCartData ) );

setErrorData

此操作用于在商店中设置错误数据。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( setErrorData( newErrorData ) );

receiveCartContents

此操作返回一个操作对象,用于使用提供的购物车数据更新商店。 它省略了客户的地址,以便仅接收购物车项和总额的更新。

参数

返回值

示例

const { dispatch } = useDispatch( cartStore );
dispatch( receiveCartContents( newCartContents ) );

receiveApplyingCoupon

此动作返回一个动作对象,用于跟踪何时应用优惠券。

参数

返回值

示例

const { dispatch } = useDispatch( cartStore );
dispatch( receiveApplyingCoupon( couponCode ) );

receiveRemovingCoupon

此操作返回一个操作对象,用于跟踪优惠券的移除状态。

参数

返回值

示例

const { dispatch } = useDispatch( cartStore );
dispatch( receiveRemovingCoupon( couponCode ) );

receiveCartItem

此操作用于更新购物车中的特定项目。

参数

返回值

示例

const { dispatch } = useDispatch( cartStore );
dispatch( receiveCartItem( CartResponseItem ) );

itemIsPendingQuantity

此操作返回一个操作对象,用于指示购物车中指定项目的数量是否正在更新。

参数

返回值

示例

const { dispatch } = useDispatch( cartStore );
dispatch( itemIsPendingQuantity( cartItemKey, isPending ) );

itemIsPendingDelete

此操作返回一个操作对象,用于指示购物车中的指定项目是否正在被删除。

参数

返回值

示例

const { dispatch } = useDispatch( cartStore );
dispatch( itemIsPendingDelete( cartItemKey, isPending ) );

setIsCartDataStale

此操作返回一个操作对象,用于指示购物车数据是否已过期。

参数

返回值

Example

const { dispatch } = useDispatch( cartStore );
dispatch( setIsCartDataStale( isCartDataStale ) );

updatingCustomerData

此操作返回一个操作对象,用于指示客户数据(账单和/或配送地址)是否正在更新。

参数

返回值

Example

const { dispatch } = useDispatch( cartStore );
dispatch( updatingCustomerData( isResolving ) );

shippingRatesBeingSelected

此操作返回一个操作对象,用于指示是否正在选择配送费率。

参数

返回值

Example

const { dispatch } = useDispatch( cartStore );
dispatch( shippingRatesBeingSelected( isResolving ) );

applyExtensionCartUpdate

此操作用于向 /cart/extensions 端点发送 POST 请求,并将扩展提供的相关数据一同发送。

参数

Example

const { dispatch } = useDispatch( cartStore );
dispatch( applyExtensionCartUpdate( args ) );

applyCoupon

此操作用于将优惠券应用于购物车。

参数

Example

const { dispatch } = useDispatch( cartStore );
dispatch( applyCoupon( couponCode ) );

removeCoupon

此操作用于从购物车中移除优惠券。

参数

Example

const { dispatch } = useDispatch( cartStore );
dispatch( removeCoupon( couponCode ) );

addItemToCart

此操作用于将商品添加到购物车。

参数

Example

const { dispatch } = useDispatch( cartStore );
dispatch( addItemToCart( productId, quantity ) );

removeItemFromCart

此操作用于从购物车中移除商品。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( removeItemFromCart( cartItemKey ) );

changeCartItemQuantity

此操作用于更改购物车中某个商品的数量。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( changeCartItemQuantity( cartItemKey, quantity ) );

selectShippingRate

此操作用于选择购物车中的配送方式。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( selectShippingRate( rateId, packageId ) );

setBillingAddress

此操作用于在本地设置购物车的账单地址,而不是 updateCustomerData,后者会将数据发送到服务器。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( setBillingAddress( billingAddress ) );

setShippingAddress

此操作用于在本地设置购物车的配送地址,而不是 updateCustomerData,后者会将数据发送到服务器。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( setShippingAddress( shippingAddress ) );

updateCustomerData

此操作用于更新客户的配送和/或账单地址,并返回一个更新后的购物车。

参数

示例

const { dispatch } = useDispatch( cartStore );
dispatch( updateCustomerData( customerData, editing ) );

选择器

getCartData

返回来自状态的购物车数据。

返回值

示例

const store = select( cartStore );
const cartData = store.getCartData();

getCustomerData

返回来自状态的配送和账单地址。

返回值

示例

const store = select( cartStore );
const customerData = store.getCustomerData();

getShippingRates

从状态获取配送费率。

返回值

示例

const store = select( cartStore );
const shippingRates = store.getShippingRates();

getNeedsShipping

查询购物车是否需要配送。

返回值

示例

const store = select( cartStore );
const needsShipping = store.getNeedsShipping();

getHasCalculatedShipping

查询购物车配送费是否已计算。

返回值

示例

const store = select( cartStore );
const hasCalculatedShipping = store.getHasCalculatedShipping();

getCartTotals

从状态返回购物车总计。

返回值

示例

const store = select( cartStore );
const cartTotals = store.getCartTotals();

getCartMeta

从状态中获取购物车元数据。

返回值

示例

const store = select( cartStore );
const cartMeta = store.getCartMeta();

getCartErrors

如果购物车从 API 接收到面向用户的错误,则返回购物车错误。

返回值

示例

const store = select( cartStore );
const cartErrors = store.getCartErrors();

isApplyingCoupon

查询是否正在应用优惠券。

返回值

示例

const store = select( cartStore );
const isApplyingCoupon = store.isApplyingCoupon();

isCartDataStale

查询购物车数据是否已过期。

返回值

例子

const store = select( cartStore );
const isCartDataStale = store.isCartDataStale();

getCouponBeingApplied

返回正在应用的优惠券代码。

返回值

例子

const store = select( cartStore );
const couponBeingApplied = store.getCouponBeingApplied();

isRemovingCoupon

查询是否正在移除优惠券。

返回值

例子

const store = select( cartStore );
const isRemovingCoupon = store.isRemovingCoupon();

getCouponBeingRemoved

返回正在移除的优惠券代码。

返回值

例子

const store = select( cartStore );
const couponBeingRemoved = store.getCouponBeingRemoved();

getCartItem( cartItemKey )

从状态中返回一个购物车项目。

参数

返回结果

示例

const store = select( cartStore );
const cartItem = store.getCartItem( cartItemKey );

isItemPendingQuantity( cartItemKey )

查询购物车项目是否处于待审数量状态。

参数

返回结果

示例

const store = select( cartStore );
const isItemPendingQuantity = store.isItemPendingQuantity( cartItemKey );

isItemPendingDelete( cartItemKey )

查询购物车中的某个商品是否处于待审删除状态。

参数

返回值

示例

const store = select( cartStore );
const isItemPendingDelete = store.isItemPendingDelete( cartItemKey );

isCustomerDataUpdating

查询客户数据是否正在更新。

返回值

示例

const store = select( cartStore );
const isCustomerDataUpdating = store.isCustomerDataUpdating();

isAddressFieldsForShippingRatesUpdating

查询影响配送费率的配送地址字段是否正在更新。 默认情况下,Store API 认为以下配送字段对于配送费率计算至关重要:statecountrypostcodecity

返回值

示例

const store = select( cartStore );
const isAddressFieldsForShippingRatesUpdating = store.isAddressFieldsForShippingRatesUpdating();

hasPendingItemsOperations

查询是否存在任何待审的购物车操作(添加、更新数量或删除商品)。

返回值

示例

const store = select( cartStore );
const hasPendingItemsOperations = store.hasPendingItemsOperations();

isShippingRateBeingSelected

查询是否正在选择配送费率。

返回值

示例

const store = select( cartStore );
const isShippingRateBeingSelected = store.isShippingRateBeingSelected();

getItemsPendingQuantityUpdate

获取正在更新数量的商品的商品键。

返回值

示例

const store = select( cartStore );
const itemsPendingQuantityUpdate = store.getItemsPendingQuantityUpdate();

getItemsPendingDelete

获取正在删除的商品的商品键。

返回值

示例

const store = select( cartStore );
const itemsPendingDelete = store.getItemsPendingDelete();