UNPKG

react-obsidian

Version:

Dependency injection framework for React and React Native applications

22 lines 944 B
"use strict"; 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