Files
explore/lib/socket/useSocketMessage.tsx
T
2022-11-08 10:35:17 +03:00

23 lines
547 B
TypeScript

import { useEffect, useRef } from 'react';
import type { SocketMessageParams } from 'lib/socket/types';
export default function useSocketMessage({ channel, event, handler }: SocketMessageParams) {
const handlerRef = useRef(handler);
handlerRef.current = handler;
useEffect(() => {
if (channel === undefined || event === undefined) {
return;
}
const ref = channel.on(event, (message) => {
handlerRef.current?.(message);
});
return () => {
channel.off(event, ref);
};
}, [ channel, event ]);
}