@playcanvas/blocks
Version:
High level abstract 3D primitives for React
22 lines • 679 B
JavaScript
import { useCallback, useRef } from 'react';
/**
* A hook for subscribing to a value.
* @example
* const { subscribe, notify } = useSubscribe<number>();
* subscribe((value) => console.log(value));
* notify(1);
*
* @returns `subscribe` and `notify` functions.
*/
export function useSubscribe() {
const subscribers = useRef(new Set());
const subscribe = useCallback((fn) => {
subscribers.current.add(fn);
return () => subscribers.current.delete(fn);
}, []);
const notify = useCallback((value) => {
subscribers.current.forEach((fn) => fn(value));
}, []);
return [subscribe, notify];
}
//# sourceMappingURL=use-subscribe.js.map