跳到主要内容

Collections Store (wc/store/collections)

概述

Collections Store 允许在 WooCommerce Blocks 中检索与产品相关的集合。

使用方法

要使用此存储,您需要在任何引用它的模块中导入 COLLECTIONS_STORE_KEY。 假设 @woocommerce/block-data 已注册为指向 wc.wcBlocksData 的外部依赖,您可以通过以下方式导入该键:

const { COLLECTIONS_STORE_KEY } = window.wc.wcBlocksData;

操作

receiveCollection(namespace, resourceName, queryString, ids = [], items = [], replace = false)

此操作将返回一个操作对象,该对象用于将集合结果分发到存储中,参数为给定的参数。

⚠️ 您通常不需要直接分发此操作,因为它由 getCollection 选择器的解析器使用。

参数

  • namespace string: 集合的路由命名空间,例如 /wc/blocks
  • resourceName string: 集合的资源名称,例如 products/attributes
  • queryString string: 要添加到集合请求的附加查询字符串。 请注意,集合是根据查询字符串进行缓存的,例如 ?order=ASC
  • ids array: 如果集合路由包含 ID 占位符,则您需要通过此参数提供这些 ID,顺序应与路由中占位符出现的顺序一致。
  • response Object: 一个包含 items 属性的对象,其中 items 属性包含来自响应的集合项(数组),以及一个 headers 属性,该属性与 window.Headers 界面匹配,包含来自响应的头部信息。
  • replace boolean: 指示是否应替换存储中给定索引(命名空间、资源名称、查询字符串)中已存在的任何项。

示例

const { dispatch } = useDispatch( COLLECTIONS_STORE_KEY );
dispatch( receiveCollection( namespace, resourceName, queryString, ids, response ) );

receiveCollectionError

此操作将返回一个操作对象,该对象用于将错误分发到存储中,参数为给定的参数。

参数

  • namespace string: 集合的路由命名空间,例如 /wc/blocks
  • resourceName string: 集合的资源名称,例如 products/attributes
  • queryString string: 要添加到集合请求的附加查询字符串。 请注意,集合是根据查询字符串进行缓存的,例如 ?order=ASC
  • ids array: 如果集合路由包含 ID 占位符,则您需要通过此参数提供这些 ID,顺序应与路由中占位符出现的顺序一致。
  • error object: 包含以下键的错误对象:
    • code string: 错误代码。
    • message string: 错误消息。
    • data object: 包含以下键的错误数据:
      • status number: HTTP 状态码。
      • params object: 错误的参数。
      • headers object: 错误的头部信息。

Example

const { dispatch } = useDispatch( COLLECTIONS_STORE_KEY );
dispatch( receiveCollectionError( namespace, resourceName, queryString, ids, error ) );

receiveLastModified

此函数将返回一个动作对象,用于将修改日期发送到服务器。该对象使用在派发操作时提供的参数。

参数

  • timestamp number: 最后的修改日期的时间戳。

Example

const { dispatch } = useDispatch( COLLECTIONS_STORE_KEY );
dispatch( receiveLastModified( timestamp ) );

Selectors

getFromState

此选择器将返回来自 collections 存储的状态。

返回值

  • object: 来自 collections 存储的状态,包含以下属性:
    • namespace string: collection 的路由命名空间,例如:/wc/blocks
    • resourceName string: collection 的资源名称,例如:products/attributes
    • query object: collection 的查询参数,例如:{ order: 'ASC', sortBy: Price }
    • ids array: 如果 collection 路由包含用于提供占位符值的数组(按顺序)。
    • type string: collection 的类型,例如:items

或者

  • array | null | undefined: 如果 collection 缺少与提供的参数匹配的头部信息,则返回一个默认值(作为参数指定)。

Example

const store = select( COLLECTIONS_STORE_KEY );
const state = store.getFromState( state, namespace, resourceName, queryString, ids, type, fallback );

getCollection

此选择器将返回给定参数对应的 collection。 它有一个关联的解析器,如果选择器尚未被解析,则解析器会向服务器发送请求以获取 collection,并将结果发送到服务器。

返回值

  • object: 返回 getFromState 对象(参见 getFromState)。

getCollectionHeader

此选择器将使用给定的参数从 collection 响应中返回一个头部信息。 它有一个关联的解析器,如果 getCollection 尚未被解析,则解析器将使用这些参数来解析 getCollection

返回值

  • undefined: 如果集合包含头部,但没有与给定 header 参数匹配的头部,则返回 undefined

或者

  • null: 如果集合没有与给定参数匹配的任何头部,则返回 null

或者

  • object: 如果集合具有与给定参数匹配的头部,则返回一个包含以下属性的对象:
    • namespace string: 集合的路由命名空间,例如:/wc/blocks
    • resourceName string: 集合的资源名称,例如:products/attributes
    • header string: 头部键。
    • query Object: 集合的查询参数,例如:{ order: 'ASC', sortBy: Price }
    • ids Array: 如果集合路由包含用于提供占位符值的 ids,则将这些值按顺序放在此数组中。

getCollectionHeaders

此选择器将返回集合的头部信息。

返回值

  • object: 返回 getFromState 对象(请参阅 getFromState)。

示例

const store = select( COLLECTIONS_STORE_KEY );
const headers = store.getCollectionHeaders( state, namespace, resourceName, queryString );

getCollectionError

此选择器将返回在获取集合时发生的任何错误。

返回值

  • object: 返回 getFromState 对象(请参阅 getFromState)。

示例

const store = select( COLLECTIONS_STORE_KEY );
const error = store.getCollectionError( state, namespace, resourceName, queryString );

getCollectionLastModified

此选择器将返回集合的最后修改日期。

返回值

  • number: 集合的最后修改日期,如果不存在最后修改日期,则返回 0

示例

const store = select( COLLECTIONS_STORE_KEY );
const lastModified = store.getCollectionLastModified( state, namespace, resourceName, queryString );