5180 fichiers 38.5 Mo 0 téléchargements 242 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / events / useExternalSnapshot.ts
useExternalSnapshot.ts 978 o Télécharger le fichier
import { useSyncExternalStore } from 'react';

/**
 * useSyncExternalStore wrapper for the Octane renderer's subscribe + snapshot
 * getter contract.
 *
 * Pair with EventDispatcher.subscribe() (Octane Renderer v2.1.0+) and a
 * referentially-stable snapshot getter such as
 * SessionDataManager.getUserDataSnapshot() or
 * RoomSessionManager.getActiveRoomSessionSnapshot().
 *
 *   const userData = useExternalSnapshot(
 *       cb => GetEventDispatcher().subscribe(OctaneEventType.SESSION_DATA_UPDATED, cb),
 *       () => GetSessionDataManager().getUserDataSnapshot()
 *   );
 *
 * Snapshot reference invariance is guaranteed by the renderer: the same
 * object is returned across reads until the corresponding *_UPDATED event
 * dispatches.
 */
export const useExternalSnapshot = <T>(subscribe: (onChange: () => void) => () => void, getSnapshot: () => T, getServerSnapshot?: () => T): T =>
    useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot ?? getSnapshot);
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