Repository navigation
code mod for breaking syntax changes #2983
Copy link
Copy link
Closed
Description
useQuery, useInfiniteQuery, queryClient.fetchQuery, queryClient.prefetchQuery, queryClient.fetchInfiniteQuery, queryClient.prefetchInfiniteQuery, useInfiniteQuery
input:
useQuery('todos', fetchTodos)
output:
useQuery(['todos'], fetchTodos)
input:
useQuery(['todos'], fetchTodos, { staleTime: 1000 })
output:
useQuery(['todos'], fetchTodos, { staleTime: 1000 })
input:
useQuery(['todos'], { queryFn: fetchTodos, staleTime: 1000 })
output:
useQuery(['todos'], { queryFn: fetchTodos, staleTime: 1000 })
input:
useQuery('todos', { queryKey: ['notTodos'], queryFn: fetchTodos, staleTime: 1000 })
output:
useQuery(['todos'], { queryKey: ['notTodos'], queryFn: fetchTodos, staleTime: 1000 })
input:
useQuery({ queryKey: 'todos', staleTime: 1000 })
output:
useQuery({ queryKey: ['todos'], staleTime: 1000 })
input:
const key = 'todos'
useQuery(key, { queryFn: fetchTodos, staleTime: 1000 })
output:
useQuery({ queryKey: [key], queryFn: fetchTodos, staleTime: 1000 })
input:
const queryKey = 'todos'
useQuery({ queryKey, queryFn: fetchTodos, staleTime: 1000 })
output:
useQuery({ queryKey: [queryKey], queryFn: fetchTodos, staleTime: 1000 })
input:
const key = ['todos']
useQuery(key, { queryFn: fetchTodos, staleTime: 1000 })
output:
useQuery(key, { queryFn: fetchTodos, staleTime: 1000 })
input:
const queryKey = ['todos']
useQuery({ queryKey, queryFn: fetchTodos, staleTime: 1000 })
output:
useQuery({ queryKey, queryFn: fetchTodos, staleTime: 1000 })
input:
const queryKey = createKey()
useQuery({ queryKey, queryFn: fetchTodos, staleTime: 1000 })
output:
useQuery({ queryKey, queryFn: fetchTodos, staleTime: 1000 })
input:
import { useQuery as useReactQuery } from 'react-query'
const useQuery = (key, fn, options) => useReactQuery(key, fn, { ...options, staleTime: 1000 })
useQuery('todos', fetchTodos, {})
output:
import { useQuery as useReactQuery } from 'react-query'
const useQuery = (key, fn, options) => useReactQuery(key, fn, { ...options, staleTime: 1000 })
useQuery(['todos'], fetchTodos, {})
input:
import * as RQ from 'react-query'
const useQuery = (key, fn, options) => RQ.useQuery(key, fn, { ...options, staleTime: 1000 })
useQuery('todos', fetchTodos, {})
output:
import * as RQ from 'react-query'
const useQuery = (key, fn, options) => RQ.useQuery(key, fn, { ...options, staleTime: 1000 })
useQuery(['todos'], fetchTodos, {})
queryClient.invalidateQueries, queryClient.refetchQueries, queryClient.resetQueries, queryClient.removeQueries, queryClient.cancelQueries
input:
const queryClient = useQueryClient()
queryClient.invalidateQueries('todos')
output:
const queryClient = useQueryClient()
queryClient.invalidateQueries(['todos'])
input:
const queryClient = useQueryClient()
queryClient.invalidateQueries('todos', { exact: true })
output:
const queryClient = useQueryClient()
queryClient.invalidateQueries(['todos'], { exact: true })
input:
const queryClient = useQueryClient()
queryClient.invalidateQueries(['todos'], { exact: true }, options)
output:
const queryClient = useQueryClient()
queryClient.invalidateQueries(['todos'], { exact: true }, options)
input:
useQueryClient().invalidateQueries({ queryKey: 'todos', exact: true })
output:
useQueryClient().invalidateQueries({ queryKey: ['todos'], exact: true })
input:
useQueryClient().invalidateQueries({ queryKey: ['todos'], exact: true })
output:
useQueryClient().invalidateQueries({ queryKey: ['todos'], exact: true })
input:
const queryKey = 'todos'
useQueryClient().invalidateQueries({ queryKey, exact: true })
output:
useQueryClient().invalidateQueries({ queryKey: [queryKey], exact: true })
input:
const queryKey = ['todos']
useQueryClient().invalidateQueries({ queryKey, exact: true })
output:
useQueryClient().invalidateQueries({ queryKey, exact: true })
queryClient.getQueryData, queryClient.getQueryState, queryCache.find, queryClient.getQueriesData, queryClient.isFetching, useIsFetching, useIsMutating, queryCache.findAll, queryClient.setQueriesData
input:
const queryClient = useQueryClient()
queryClient.getQueryData('key', { exact: true })
output:
const queryClient = useQueryClient()
queryClient.getQueryData(['key'], { exact: true })
input:
const queryClient = useQueryClient()
queryClient.getQueryData(['key'], { exact: true })
output:
const queryClient = useQueryClient()
queryClient.getQueryData(['key'], { exact: true })
queryClient.setQueryData, queryClient.setMutationDefaults, queryClient.getMutationDefaults, queryClient.setQueryDefaults, queryClient.getQueryDefaults
- fn(key, updater, options)
+ fn([key], updater, options)useMutation
same as useQuery, except that queryKey is mutationKey
useQueries
An easy one because useQueries only gets an array passed, which should become an object. Nothing within query1 / query2 / query3 needs to change.
- useQueries([query1, query2, query3])
+ useQueries({ queries: [query1, query2, query3])after that, inside the queries object, we need to change queryKey to be an array, like for useQuery with the object syntax.
Reactions are currently unavailable
Activity
TkDodo commentedon Nov 19, 2021
@balazsmatepetro I've added some examples for
useQuery. I will add more for the other methods a bit later. I hope I didn't make any syntax errors 😅balazsmatepetro commentedon Nov 19, 2021
Thank you so much, it helps a lot! :)
TkDodo commentedon Jan 3, 2022
@balazsmatepetro how are things on the code mod? Do you need any help?
balazsmatepetro commentedon Jan 5, 2022
Hi! I'm planning to open a PR at the end of this week. :)
balazsmatepetro commentedon Jan 18, 2022
Task list
Write codemods for:
useQueryhookuseQuerieshookuseInfiniteQueryhookuseIsFetchinghookuseIsMutatinghookuseMutationhookQueryCachemethodsfindfindAllQueryClientmethodscancelQueriesfetchInfiniteQueryfetchQueryinvalidateQueriesprefetchInfiniteQueryprefetchQueryrefetchQueriesremoveQueriesresetQueriescancelQueriesgetMutationDefaultsgetQueriesDatagetQueryDatagetQueryDefaultsgetQueryStateinvalidateQueriesisFetchingrefetchQueriesremoveQueriesresetQueriessetMutationDefaultssetQueriesDatasetQueryDatasetQueryDefaultsAdditional tasks:
mutationKeyin case ofuseMutationhook.v4directory.Things to address after our last sync with @TkDodo:
use_querydirectory, it's fine to have everything under thecodemods/v4directory.typeArgumentsfrom the nodes (mostly generic types).invalidateQueriesmethod inplaygroundexample.queryKeyis already an array.tannerlinsley commentedon Feb 18, 2022
🎉 This issue has been resolved in version 4.0.0-alpha.13 🎉
The release is available on:
Your semantic-release bot 📦🚀
tannerlinsley commentedon Apr 2, 2022
🎉 This issue has been resolved in version 4.0.0-beta.1 🎉
The release is available on:
Your semantic-release bot 📦🚀