18 lines
561 B
JavaScript
18 lines
561 B
JavaScript
import EventEmitter from "eventemitter3";
|
|
import { useEffect, useCallback } from "react";
|
|
|
|
const eventEmitter = new EventEmitter();
|
|
|
|
export function useEventEmitter(eventEmitter, eventName, fn, deps = []) {
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
const callback = useCallback(fn, deps);
|
|
useEffect(() => {
|
|
eventEmitter.on(eventName, callback);
|
|
return () => {
|
|
eventEmitter.off(eventName, callback);
|
|
};
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, [eventName, callback]);
|
|
}
|
|
|
|
export default eventEmitter;
|