The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/client/hooks/useReactiveValue.ts

10 lines
463 B

import { useMemo } from 'react';
import { useSyncExternalStore } from 'use-sync-external-store/shim';
import { createReactiveSubscriptionFactory } from '../lib/createReactiveSubscriptionFactory';
export const useReactiveValue = <T>(computeCurrentValue: () => T): T => {
const [subscribe, getSnapshot] = useMemo(() => createReactiveSubscriptionFactory<T>(computeCurrentValue)(), [computeCurrentValue]);
return useSyncExternalStore(subscribe, getSnapshot);
};