import { useEffect, useState } from 'react';
import { Observable, Subscription } from 'rxjs';
export function useObservable<T>(observable: Observable<T>): T | undefined;
export function useObservable<T>(observable: Observable<T>, initialState: T): T;
export function useObservable<T>(observable: Observable<T>, initialState?: T): T | undefined {
const [state, setState] = useState<T | undefined>(initialState);
useEffect(() => {
const subscription: Subscription = observable.subscribe((next: T) => {
setState(next);
});
return () => {
subscription.unsubscribe();
};
}, [observable]);
return state;
}