useEventCallback
import useEventCallback from "ynw/react/useEventCallback";
import { useState, useEffect, useCallback } from "react";
import { Subject } from "rxjs";
import useConstant from "./useConstant";
export default function useEventCallback(callback, initialState) {
const [state, setState] = useState(initialState);
const event$ = useConstant(() => new Subject());
function eventCallback(e) {
return event$.next(e);
}
const returnedCallback = useCallback(eventCallback, []);
useEffect(() => {
let value$ = callback(event$);
const subscription = value$.subscribe(value => setState(value));
return () => {
subscription.unsubscribe();
event$.complete();
};
}, []);
return [returnedCallback, state];
}