@itwin/itwinui-react
Version:
A react component library for iTwinUI
19 lines (18 loc) • 609 B
JavaScript
import * as React from 'react';
import { useSyncExternalStore } from './useSyncExternalStore.js';
class Instance {}
export const useInstance = () => React.useMemo(() => new Instance(), []);
export const useSynchronizeInstance = (instance, properties) => {
let synchronize = React.useCallback(() => {
if (!(instance instanceof Instance)) return () => {};
Object.assign(instance, properties);
return () => {
for (let key in properties) delete instance[key];
};
}, [instance, properties]);
return useSyncExternalStore(
synchronize,
() => instance,
() => instance,
);
};