Загрузка данных


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;
}