@uppy/react
Version:
React component wrappers around Uppy's official UI plugins.
10 lines (9 loc) • 486 B
JavaScript
import { useCallback, useMemo } from 'react';
import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js';
export default function useUppyState(uppy, selector) {
const subscribe = useMemo(() => uppy.store.subscribe.bind(uppy.store), [uppy.store]);
const getSnapshot = useCallback(() => uppy.store.getState(), [uppy.store]);
return useSyncExternalStoreWithSelector(subscribe, getSnapshot, // client
getSnapshot, // server
selector);
}