TanStackT
TanStack3y ago
2 replies
popular-magenta

useQuery is not refreshing data after setQueryData

Hello, why below snippet does not refresh useQuery which has queryKey equal to QueryKey.MyItems?
As I log data from getQueryData, I see it's updated.

  const { mutate: removeItem, isLoading } = useMutation(
    [QueryKey.RemoveFromMyLibrary],
    removeItemFromLibrary,
    {
      onSuccess: itemId => {
        const previousData = queryClient.getQueryData([QueryKey.MyItems]) as GetItemsResponse
        queryClient.setQueryData(..., {...data, count: data.count - 1, items: items.filter(...)})

        const newData = previousData
        console.log(newData, 'newData')
        newData.total -= 1
        const itemIndex = newData.items.findIndex(item => item.id === itemId)
        newData.items.splice(itemIndex, 1)

        queryClient.setQueryData([QueryKey.MyItems], newData)
        const updatedData = queryClient.getQueryData([QueryKey.MyItems])
        console.log(updatedData, 'updatedData')
      }
    }
  )
Was this page helpful?