@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
24 lines (19 loc) • 533 B
text/typescript
import { useEffect, useState } from "react";
import type { Subject } from "rxjs";
export const useStateFromSubscribe = <T, U>(
subject: Subject<T>,
onUpdate: (
observerValue: T,
next: React.Dispatch<React.SetStateAction<U>>
) => void,
initialValue: U
) => {
const [state, setState] = useState<U>(initialValue);
useEffect(() => {
const subscription = subject.subscribe((observer) =>
onUpdate(observer, setState)
);
return () => subscription.unsubscribe();
}, [subject]);
return state;
};