@bemedev/app-react
Version:
Use app-ts inside react
21 lines (20 loc) • 778 B
JavaScript
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