UNPKG

@bemedev/app-react

Version:
21 lines (20 loc) 778 B
import { getSnapshot } from "./utils/getSnapshot.js"; import "./utils/index.js"; import { useSync } from "@bemedev/react-sync"; import { dequal } from "dequal"; import { useCallback, useRef } from "react"; //#region src/useSelector.ts const useSelector = (service, selector, compare = dequal) => { const initialStateCacheRef = useRef(void 0); const subscribe = useCallback((listerner) => { const subscriber = service.subscribe(listerner); return () => subscriber.unsubscribe(); }, [service]); const boundGetSnapshot = useCallback(() => { return getSnapshot(service, initialStateCacheRef); }, [service]); return useSync(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare); }; //#endregion export { useSelector }; //# sourceMappingURL=useSelector.js.map