4.9 KiB
Schema Store (wc/store/schema
)
Table of contents
Overview
The Schema Store manages the routes associated with WooCommerce Blocks, enabling efficient retrieval and updating of route data for a given namespace. This store streamlines the interaction with resource routes, ensuring that modules can easily access endpoint paths as needed.
Usage
To utilize this store you will import the SCHEMA_STORE_KEY
in any module referencing it. Assuming @woocommerce/block-data
is registered as an external pointing to wc.wcBlocksData
you can import the key via:
const { SCHEMA_STORE_KEY } = window.wc.wcBlocksData;
Actions
⚠️ You should rarely need to use any of these actions directly as they are mostly used internally by the resolvers.
receiveRoutes( routes, namespace)
This returns an action object used to update the store with the provided list of resource routes.
Parameters
- routes
array
: An array of routes attached for the given namespace, eg.[ '/wc/blocks/products', '/wc/blocks/products/attributes/(?P<id>[\d]+)' ]
. - namespace
string
: The namespace the routes belong to, eg./wc/blocks
.
Returns
object
: An action object used to update the store with the provided list of resource routes with teh following keys:- type
string
: The action type. - routes
object
: An object of routes keyed by the route name. - namespace
string
: The namespace the routes belong to, eg./wc/blocks
.
- type
Selectors
getRoute( state, namespace, resourceName, ids = [] )
This is used for retrieving a route for the given namespace, resource name and (if necessary) ids.
Parameters
- state
object
: The original state. - namespace
string
: The namespace for the route, eg./wc/blocks
, - resourceName
string
: The resource being requested, eg.products/attributes/terms
. - ids
array
: Only needed if the route has placeholders for ids.
Returns
string
: The route if it is available.
Examples
If you are looking for a route for a single product on the wc/blocks
namespace, then you'd have [ 20 ]
as the ids:
// '/wc/blocks/products/20'
wp.data.select( SCHEMA_STORE_KEY ).getRoute( '/wc/blocks', 'products', [ 20 ] );
getRoutes( state, namespace )
This will return all the registered routes for the given namespace as a flat array.
Parameters
- state
object
: The current state. - namespace
string
: The namespace to return routes for.
Returns
array
: An array of all routes for the given namespace.
getRouteFromResourceEntries
This will returns the route from the given slice of the route state.
Parameters
- stateSlice
object
: Slice of the route state from a given namespace and resource name. - ids
array
(default:[]
): An array of id references that are to be replaced in route placeholders.
Returns
string
: The route for the given resource entries, or an empty string if no route is found.
Example
const store = select( SCHEMA_STORE_KEY );
const route = store.getRouteFromResourceEntries( stateSlice, ids );
assembleRouteWithPlaceholders
This will return the assembled route with placeholders.
Parameters
- route
string
: The route to assemble. - routePlaceholders
array
: An array of route placeholders. - ids
array
: An array of id references that are to be replaced in route placeholders.
Returns
string
: The assembled route with placeholders replaced by actual values.
Example
const store = select( SCHEMA_STORE_KEY );
const route = store.assembleRouteWithPlaceholders( route, routePlaceholders, ids );
We're hiring! Come work with us!
🐞 Found a mistake, or have a suggestion? Leave feedback about this document here.