Files
bs-manager/src/renderer/hooks/use-observable.hook.ts
T
2023-07-01 22:12:47 +02:00

14 lines
411 B
TypeScript

import { Observable } from "rxjs";
import { useState, useEffect } from "react";
export function useObservable<T>(observable: Observable<T>, defaultValue?: T): T {
const [obsValue, setObsValue] = useState(defaultValue ?? (null as T));
useEffect(() => {
const sub = observable.subscribe(val => setObsValue(() => val));
return () => sub.unsubscribe();
}, []);
return obsValue;
}