You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First of all, thanks for skipToken Janeek and TkDodo 💜. This made useQuery()a lot more enjoyable to use with TS, without a bunch of non-null assertions (which we would always inevitably get wrong by missing some).
While in the process of migrating all our calls to it from enabled, had some tedious time spotting the root cause of this Missing queryFn error:
Eventually figured it out, and it was a legacy refetch() call which was still present after the migration. While this was specified in docs, I believe there could be more details as far as what "doesn't work" means, either in terms of docs of error messaging:
-`refetch` returned from `useQuery` can be used to manually trigger the query to fetch. However, it will not work with `skipToken`.
Not sure to which extent we would like to document the docs (i.e whether or not we would like to go into full details that refetch() will mount an observer and that there can't be an observer without an actual queryFn()), but as a developer using skipToken, I believe there would be good value in at least documenting the aforementioned behaviour, or even better, improve the checks and messaging of the error to reflect the cause.
Docs clearly mention that refetch() will eventually result in a Missing queryFn error
please file a PR to the docs
Checks are made for refetches explicitly, and the messaging of the error is improved e.g Cannot call refetch() with skipToken
We don't know if a fetch was made by a call to refetch() or not, but we can definitely change the message if the queryFn was a skipToken to hint that the most likely way this can happen is if you called refetch() while the queryFn was set to skipToken.
Describe the bug
First of all, thanks for
skipToken
Janeek and TkDodo 💜. This madeuseQuery()
a lot more enjoyable to use with TS, without a bunch of non-null assertions (which we would always inevitably get wrong by missing some).While in the process of migrating all our calls to it from
enabled
, had some tedious time spotting the root cause of thisMissing queryFn
error:query/packages/query-core/src/utils.ts
Lines 393 to 396 in bda8a54
Eventually figured it out, and it was a legacy
refetch()
call which was still present after the migration. While this was specified in docs, I believe there could be more details as far as what "doesn't work" means, either in terms of docs of error messaging:query/docs/framework/react/guides/disabling-queries.md
Line 15 in bda8a54
Not sure to which extent we would like to document the docs (i.e whether or not we would like to go into full details that
refetch()
will mount an observer and that there can't be an observer without an actualqueryFn()
), but as a developer usingskipToken
, I believe there would be good value in at least documenting the aforementioned behaviour, or even better, improve the checks and messaging of the error to reflect the cause.Your minimal, reproducible example
https://codesandbox.io/p/sandbox/great-snyder-t5vxyk?file=/src/App.js
Steps to reproduce
useQuery()
call withskipToken
refetch()
method for that queryMissing queryFn: <hash>
) untilqueryFn
actually becomes a function.Expected behavior
Either/or:
refetch()
will eventually result in aMissing queryFn
errorCannot call refetch() with skipToken
How often does this bug happen?
None
Screenshots or Videos
N/A
Platform
N/A
Tanstack Query adapter
react-query
TanStack Query version
5
TypeScript version
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: