Skip to content

Commit 342c1fb

Browse files
authored
fix: do not suspend on subsequent page loads (TanStack#531)
1 parent e5f0bb3 commit 342c1fb

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

src/tests/usePaginatedQuery.test.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,39 @@ describe('usePaginatedQuery', () => {
192192
rendered.getByText('Data second-search 1')
193193
await waitForElement(() => rendered.getByText('Data second-search 2'))
194194
})
195+
196+
it('should not suspend while fetching the next page', async () => {
197+
function Page() {
198+
const [page, setPage] = React.useState(1)
199+
200+
const { resolvedData } = usePaginatedQuery(
201+
['data', { page }],
202+
async (queryName, { page }) => {
203+
await sleep(1)
204+
return page
205+
},
206+
{
207+
initialData: 0,
208+
suspense: true,
209+
}
210+
)
211+
212+
return (
213+
<div>
214+
<h1 data-testid="title">Data {resolvedData}</h1>
215+
<button onClick={() => setPage(page + 1)}>next</button>
216+
</div>
217+
)
218+
}
219+
220+
// render will throw if Page is suspended
221+
const rendered = render(
222+
<ReactQueryCacheProvider>
223+
<Page />
224+
</ReactQueryCacheProvider>
225+
)
226+
227+
fireEvent.click(rendered.getByText('next'))
228+
await waitForElement(() => rendered.getByText('Data 2'))
229+
})
195230
})

src/usePaginatedQuery.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ export function usePaginatedQuery(...args) {
3939
status = 'success'
4040
}
4141

42-
handleSuspense(query)
43-
44-
return {
42+
const paginatedQuery = {
4543
...query,
4644
resolvedData,
4745
latestData,
4846
status,
4947
}
48+
49+
handleSuspense(paginatedQuery)
50+
51+
return paginatedQuery
5052
}

0 commit comments

Comments
 (0)