UNPKG

@equinor/fusion-observable

Version:
18 lines 732 B
import { useLayoutEffect, useState } from 'react'; /** * Apply side effect to Reactive Subject. * * __IMPORTANT__ observable returned from epics must return new action or will create infinite loop */ export function useObservableEffect(subject, effectOrType, effect) { const [type] = useState(() => (typeof effectOrType === 'string' ? effectOrType : undefined)); const [fn] = useState(() => effect ?? effectOrType); useLayoutEffect(() => { const subscription = type ? subject.addEffect(type, fn) : subject.addEffect(fn); return () => subscription.unsubscribe(); }, [subject, type, fn]); } export default useObservableEffect; //# sourceMappingURL=useObservableEffect.js.map