react-obsidian
Version:
Dependency injection framework for React and React Native applications
22 lines • 944 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useObserver = void 0;
/* eslint-disable no-param-reassign */
const react_1 = require("react");
const Observable_1 = require("./Observable");
function useObserver(observableOrGenerator) {
const observable = (0, react_1.useMemo)(() => getOrGenerateObservable(observableOrGenerator), []);
const [value, setValue] = (0, react_1.useState)(observable.value);
const onNext = (0, react_1.useCallback)((next) => {
observable.value = next;
}, [observable]);
(0, react_1.useEffect)(() => {
return observable.subscribe(setValue);
}, [observable]);
return [value, onNext];
}
exports.useObserver = useObserver;
function getOrGenerateObservable(observableOrGenerator) {
return observableOrGenerator instanceof Observable_1.Observable ? observableOrGenerator : observableOrGenerator();
}
//# sourceMappingURL=useObserver.js.map
;