UNPKG

@wordpress/data

Version:
56 lines (53 loc) 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.Context = exports.AsyncModeConsumer = void 0; var _element = require("@wordpress/element"); /** * WordPress dependencies */ const Context = exports.Context = (0, _element.createContext)(false); Context.displayName = 'AsyncModeContext'; const { Consumer, Provider } = Context; const AsyncModeConsumer = exports.AsyncModeConsumer = Consumer; /** * Context Provider Component used to switch the data module component rerendering * between Sync and Async modes. * * @example * * ```js * import { useSelect, AsyncModeProvider } from '@wordpress/data'; * import { store as blockEditorStore } from '@wordpress/block-editor'; * * function BlockCount() { * const count = useSelect( ( select ) => { * return select( blockEditorStore ).getBlockCount() * }, [] ); * * return count; * } * * function App() { * return ( * <AsyncModeProvider value={ true }> * <BlockCount /> * </AsyncModeProvider> * ); * } * ``` * * In this example, the BlockCount component is rerendered asynchronously. * It means if a more critical task is being performed (like typing in an input), * the rerendering is delayed until the browser becomes IDLE. * It is possible to nest multiple levels of AsyncModeProvider to fine-tune the rendering behavior. * * @param {boolean} props.value Enable Async Mode. * @return {Component} The component to be rendered. */ var _default = exports.default = Provider; //# sourceMappingURL=context.js.map