Skip to content

Commit c6748fb

Browse files
committed
Merge remote-tracking branch 'origin/main' into beta
# Conflicts: # packages/query-async-storage-persister/package.json # packages/query-broadcast-client-experimental/package.json # packages/query-core/package.json # packages/query-persist-client-core/package.json # packages/query-sync-storage-persister/package.json # packages/react-query-devtools/package.json # packages/react-query-persist-client/package.json # packages/react-query/package.json # packages/solid-query/package.json # packages/svelte-query/package.json # packages/vue-query/package.json
2 parents 4307a80 + 46e7b02 commit c6748fb

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

packages/query-core/src/queryObserver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,7 @@ function shouldAssignObserverCurrentProperties<
763763
) {
764764
// if the newly created result isn't what the observer is holding as current,
765765
// then we'll need to update the properties as well
766-
if (observer.getCurrentResult() !== optimisticResult) {
766+
if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {
767767
return true
768768
}
769769

packages/react-query/src/__tests__/useQuery.test.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6228,4 +6228,25 @@ describe('useQuery', () => {
62286228
await waitFor(() => rendered.getByText('Rendered Id: 2'))
62296229
expect(spy).toHaveBeenCalledTimes(1)
62306230
})
6231+
it('should not cause an infinite render loop when using unstable callback ref', async () => {
6232+
const key = queryKey()
6233+
6234+
function Test() {
6235+
const [_, setRef] = React.useState<HTMLDivElement | null>()
6236+
6237+
const { data } = useQuery({
6238+
queryKey: [key],
6239+
queryFn: async () => {
6240+
await sleep(5)
6241+
return 'Works'
6242+
},
6243+
})
6244+
6245+
return <div ref={(value) => setRef(value)}>{data}</div>
6246+
}
6247+
6248+
const rendered = renderWithClient(queryClient, <Test />)
6249+
6250+
await waitFor(() => rendered.getByText('Works'))
6251+
})
62316252
})

0 commit comments

Comments
 (0)