@wordpress/data
Version:
Data module for WordPress.
39 lines (37 loc) • 1.41 kB
text/typescript
/**
* Internal dependencies
*/
import type { AnyConfig, StoreDescriptor, DispatchReturn } from './types';
import defaultRegistry from './default-registry';
/**
* Given a store descriptor, returns an object of the store's action creators.
* Calling an action creator will cause it to be dispatched, updating the state value accordingly.
*
* Note: Action creators returned by the dispatch will return a promise when
* they are called.
*
* Warning: This global `dispatch` function only works with the default registry.
* It will not work with custom `RegistryProvider` or `BlockEditorProvider` contexts.
* In React components, prefer the `useDispatch` hook instead, which is registry-aware.
*
* @param storeNameOrDescriptor The store descriptor. The legacy calling convention of passing
* the store name is also supported.
*
* @example
* ```js
* import { dispatch } from '@wordpress/data';
* import { store as myCustomStore } from 'my-custom-store';
*
* dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );
* ```
* @return Object containing the action creators.
*/
export function dispatch<
StoreNameOrDescriptor extends StoreDescriptor< AnyConfig > | string,
>(
storeNameOrDescriptor: StoreNameOrDescriptor
): DispatchReturn< StoreNameOrDescriptor > {
return defaultRegistry.dispatch(
storeNameOrDescriptor
) as DispatchReturn< StoreNameOrDescriptor >;
}