import { useState, useEffect } from 'react'; import { Observable } from 'rxjs'; export function useValue$(value$: Observable, initialValue: T) { const [value, setValue] = useState(initialValue); useEffect$(value$, value => { setValue(value); }); return value; } export function useEffect$(event$: Observable, effect: (e: T) => void) { useEffect(() => { const $ = event$.subscribe(effect); return () => $.unsubscribe(); }, [event$]); }