UNPKG

rcrx

Version:

Rcrx is a lightweight library that provides Rx.js utilities for React applications.

29 lines (26 loc) 719 B
// src/hooks/observable.ts import { useState as useState2 } from "react"; // src/hooks/subscribe.ts import { useEffect, useRef, useState } from "react"; function useSubscribe(observable, fn, defaultReturnValue) { const [value, setValue] = useState(defaultReturnValue); const fnRef = useRef(fn); fnRef.current = fn; useEffect(() => { const subs = observable.subscribe( (value2) => setValue(fnRef.current(value2)) ); return () => subs.unsubscribe(); }, [observable]); return value; } // src/hooks/observable.ts function useObservable(observable) { const [value, setValue] = useState2(); useSubscribe(observable, setValue); return value; } export { useObservable, useSubscribe };