| 12345678910111213141516171819 |
- import { frame } from 'motion-dom';
- import { useState, useCallback } from 'react';
- import { useIsMounted } from './use-is-mounted.mjs';
- function useForceUpdate() {
- const isMounted = useIsMounted();
- const [forcedRenderCount, setForcedRenderCount] = useState(0);
- const forceRender = useCallback(() => {
- isMounted.current && setForcedRenderCount(forcedRenderCount + 1);
- }, [forcedRenderCount]);
- /**
- * Defer this to the end of the next animation frame in case there are multiple
- * synchronous calls.
- */
- const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);
- return [deferredForceRender, forcedRenderCount];
- }
- export { useForceUpdate };
|