Comments (3)
This is an interesting one, and took me some time to figure out, but I think I've got it. It's a problem with how we do smart property tracking (not so smart in this case).
We try to minimize re-renders by only re-rendering a component if it actually uses something that it is interested in. To do that, we keep track of what gets used, for each query. You can read more about this here: https://tkdodo.eu/blog/react-query-render-optimizations#tracked-queries
With useQueries
, we also do this per query. But when you call .some
on an array, it will eagerly abort if it gets a true
hit, thus only invoking result.isLoading
for the first query, which means when the loading state for the queries 2-4 changes, we don't re-render the component.
That + the .filter
function, which will make sure that we track the data
property will lead to only the data
property being tracked. If you don't have the .filter
function, we will have an empty set of properties to track, which means we're tracking all properties. That's why it works without filter, but not with it.
That's certainly a bug, but I'd need to dig into how to fix this. As a workaround, you can set notifyOnChangeProps: 'all'
on your query to get a consistent result:
queries: ids.map((id) => ({
queryKey: ["post", id],
queryFn: () => fetchPost(id),
retry: false,
+ notifyOnChangeProps: "all",
})),
If I don't find a fix, I will probably force set notifyOnChangeProps: 'all'
if combine
is specified on useQueries
. This might run combine
more often, but that's better than missing re-renders. We don't track the result object of useQueries
anyways, so this option is not too useful if combine
is specified.
from query.
Sounds good. Thanks for the quick reply, really appreciate it. I have read your blog before (really excellent resource) but I will brush up on it again.
from query.
I found a proper fix, please try out v5.24.7
from query.
Related Issues (20)
- autoResetPageIndex not reseting properly HOT 3
- Search issue on Tanstack Documentation HOT 1
- UseQueries not working with refs in Vue.
- Infinite query error when getNextPageParam is not after queryFn HOT 3
- 'React Example: Nextjs Suspense Streaming' doesn't work HOT 1
- Tanstack Query for Svelte 5 does not rerender when adding a dependency variable HOT 3
- vite-plugin-vue-devtools + Vue Devtools integration not working HOT 1
- onSuccess, onSettled do not work in svelte-query HOT 1
- Errors for shared queryKeys cause all queryFn to run, even if disabled HOT 1
- Handling Persistent Storage Overflow with TanStack Query and persister HOT 2
- Docs: Broken links in react suspense guide HOT 1
- Dependent useQueries creates too many updates (exceeds maximum update depth) HOT 2
- Order matters to useInfiniteQuery options and TS HOT 4
- [vue-query] `useQueries` type inference issues with `select`, `computed` and `Array.map` HOT 1
- enabled: false should not ever fire a query or populate the local store HOT 1
- Solid Query: <Suspense> gets stuck in a loading state HOT 9
- Docs: Broken link on "Installation" page HOT 1
- eslint-plugin-query is incompatible with Eslint 9.x HOT 3
- Solid Query is mixing up queries during SSR HOT 2
- Docs : Remove ‘$’ from Installation Commands in Documentation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from query.