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: 错误的头部信息。
- status
- code
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。
- namespace
或者
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,则将这些值按顺序放在此数组中。
- namespace
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 );