useObservable.tsfunction useObservable<T>(observable: BehaviorSubject<T>): T { let observableRef = useRef<BehaviorSubject<T>>(observable); if (observableRef.current !== observable) { observableRef.current = observable; } const subscribe = useCallback((handleStoreChange: VoidFunction) => { const subscription = observableRef.current.subscribe(handleStoreChange); return () => subscription.unsubscribe(); }, []); const getSnapshot = useCallback(() => { return observableRef.current.getValue(); }, []); return useSyncExternalStore(subscribe, getSnapshot); } Back to Snippets