@@ -1377,4 +1377,75 @@ describe('useQuery().promise', () => {
13771377 . observers . length ,
13781378 ) . toBe ( 2 )
13791379 } )
1380+
1381+ it ( 'should handle enabled state changes with suspense' , async ( ) => {
1382+ const key = queryKey ( )
1383+ const renderStream = createRenderStream ( { snapshotDOM : true } )
1384+ const queryFn = vi . fn ( async ( ) => {
1385+ await sleep ( 1 )
1386+ return 'test'
1387+ } )
1388+
1389+ function MyComponent ( props : { enabled : boolean } ) {
1390+ useTrackRenders ( )
1391+ const query = useQuery ( {
1392+ queryKey : key ,
1393+ queryFn,
1394+ enabled : props . enabled ,
1395+ staleTime : Infinity ,
1396+ } )
1397+
1398+ const data = React . use ( query . promise )
1399+ return < > { data } </ >
1400+ }
1401+
1402+ function Loading ( ) {
1403+ useTrackRenders ( )
1404+ return < > loading..</ >
1405+ }
1406+
1407+ function Page ( ) {
1408+ useTrackRenders ( )
1409+ const enabledState = React . useState ( false )
1410+ const enabled = enabledState [ 0 ]
1411+ const setEnabled = enabledState [ 1 ]
1412+
1413+ return (
1414+ < div >
1415+ < button onClick = { ( ) => setEnabled ( true ) } > enable</ button >
1416+ < React . Suspense fallback = { < Loading /> } >
1417+ < MyComponent enabled = { enabled } />
1418+ </ React . Suspense >
1419+ </ div >
1420+ )
1421+ }
1422+
1423+ const rendered = await renderStream . render (
1424+ < QueryClientProvider client = { queryClient } >
1425+ < Page />
1426+ </ QueryClientProvider > ,
1427+ )
1428+
1429+ {
1430+ const result = await renderStream . takeRender ( )
1431+ result . withinDOM ( ) . getByText ( 'loading..' )
1432+ }
1433+
1434+ expect ( queryFn ) . toHaveBeenCalledTimes ( 0 )
1435+ rendered . getByText ( 'enable' ) . click ( )
1436+
1437+ {
1438+ const result = await renderStream . takeRender ( )
1439+ result . withinDOM ( ) . getByText ( 'loading..' )
1440+ }
1441+
1442+ expect ( queryFn ) . toHaveBeenCalledTimes ( 1 )
1443+
1444+ {
1445+ const result = await renderStream . takeRender ( )
1446+ result . withinDOM ( ) . getByText ( 'test' )
1447+ }
1448+
1449+ expect ( queryFn ) . toHaveBeenCalledTimes ( 1 )
1450+ } )
13801451} )
0 commit comments