@bemedev/app-react
Version:
Use app-ts inside react
22 lines (21 loc) • 968 B
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const require_utils_getSnapshot = require("./utils/getSnapshot.cjs");
require("./utils/index.cjs");
let _bemedev_react_sync = require("@bemedev/react-sync");
let dequal = require("dequal");
let react = require("react");
//#region src/useSelector.ts
const useSelector = (service, selector, compare = dequal.dequal) => {
const initialStateCacheRef = (0, react.useRef)(void 0);
const subscribe = (0, react.useCallback)((listerner) => {
const subscriber = service.subscribe(listerner);
return () => subscriber.unsubscribe();
}, [service]);
const boundGetSnapshot = (0, react.useCallback)(() => {
return require_utils_getSnapshot.getSnapshot(service, initialStateCacheRef);
}, [service]);
return (0, _bemedev_react_sync.useSync)(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare);
};
//#endregion
exports.useSelector = useSelector;
//# sourceMappingURL=useSelector.cjs.map