UNPKG

flagsmith-react

Version:

Flagsmith integration for React Single Page Applications (SPA)

32 lines (30 loc) 813 B
import { useRef, useEffect } from "react"; export function useEventEmitter() { const ref = useRef(); if (!ref.current) { ref.current = { subscriptions: new Set(), emit: (val) => { for (const subscription of ref.current.subscriptions) { subscription(val); } }, useSubscription: (callback) => { const callbackRef = useRef(); callbackRef.current = callback; useEffect(() => { function subscription(val) { if (callbackRef.current) { callbackRef.current(val); } } ref.current.subscriptions.add(subscription); return () => { ref.current.subscriptions.delete(subscription); }; }, []); }, }; } return ref.current; }