diff --git a/src/hooks/useLoader.test.ts b/src/hooks/useLoader.test.ts index cb895544..f44a85ab 100644 --- a/src/hooks/useLoader.test.ts +++ b/src/hooks/useLoader.test.ts @@ -1,4 +1,5 @@ import {act, renderHook, waitFor} from '@testing-library/react'; +import {StrictMode} from 'react'; import {useLoader} from './useLoader'; describe('useLoader', () => { @@ -404,4 +405,34 @@ describe('useLoader', () => { await waitFor(() => expect(secondTime.current).toBe('foo')); }); + + it('should update the content in StrictMode', async () => { + jest.useFakeTimers(); + + const delay = 10; + const loader = jest.fn( + () => new Promise(resolve => { + setTimeout(() => resolve('foo'), delay); + }), + ); + + const {result} = renderHook( + () => useLoader({ + cacheKey: cacheKey.current(), + loader: loader, + initial: 'bar', + }), + { + wrapper: StrictMode, + }, + ); + + // Let the loader resolve + await act(async () => { + jest.advanceTimersByTime(delay); + await flushPromises(); + }); + + await waitFor(() => expect(result.current).toBe('foo')); + }); }); diff --git a/src/hooks/useLoader.ts b/src/hooks/useLoader.ts index 6d4929e8..54bb2c39 100644 --- a/src/hooks/useLoader.ts +++ b/src/hooks/useLoader.ts @@ -35,6 +35,8 @@ export function useLoader({initial, ...currentOptions}: CacheOptions): R { useEffect( () => { + mountedRef.current = true; + if (initial !== undefined) { load(currentOptions); }