@wordpress/components
Version:
UI components for WordPress.
34 lines (31 loc) • 707 B
JavaScript
/**
* WordPress dependencies
*/
import { useContext, useState, useEffect } from '@wordpress/element';
/**
* Internal dependencies
*/
import SlotFillContext from './context';
/**
* React hook returning the active slot given a name.
*
* @param {string} name Slot name.
* @return {Object} Slot object.
*/
const useSlot = name => {
const {
getSlot,
subscribe
} = useContext(SlotFillContext);
const [slot, setSlot] = useState(getSlot(name));
useEffect(() => {
setSlot(getSlot(name));
const unsubscribe = subscribe(() => {
setSlot(getSlot(name));
});
return unsubscribe;
}, [name]);
return slot;
};
export default useSlot;
//# sourceMappingURL=use-slot.js.map