5180 fichiers 38.5 Mo 0 téléchargements 231 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / events / useMessageEvent.tsx
useMessageEvent.tsx 873 o Télécharger le fichier
import { GetCommunication, IMessageEvent, MessageEvent } from '@octane/renderer';
import { useEffect, useLayoutEffect, useRef } from 'react';

/**
 * Registers once per event type and calls the latest handler. A handler written inline is a new function on every
 * render, and keying the registration on it removed and added the listener at each render.
 */
export const useMessageEvent = <T extends IMessageEvent>(eventType: typeof MessageEvent, handler: (event: T) => void) => {
    const handlerRef = useRef(handler);

    useLayoutEffect(() => {
        handlerRef.current = handler;
    });

    useEffect(() => {
        //@ts-ignore
        const event = new eventType((received: T) => handlerRef.current(received));

        GetCommunication().registerMessageEvent(event);

        return () => GetCommunication().removeMessageEvent(event);
    }, [eventType]);
};
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser