Package Exports
- vue-query
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (vue-query) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
vue-query
Hooks for fetching, caching and updating asynchronous data in Vue.
These hooks support Vue 2.x too via vue-demi
Based on react-query
Quick Features
- Transport/protocol/backend agnostic data fetching (REST, GraphQL, promises, whatever!)
- Auto Caching + Refetching (stale-while-revalidate, Window Refocus, Polling/Realtime)
- Parallel + Dependent Queries
- Mutations + Reactive Query Refetching
- Multi-layer Cache + Automatic Garbage Collection
- Paginated + Cursor-based Queries
- Load-More + Infinite Scroll Queries w/ Scroll Recovery
- Request Cancellation
- Suspense + Fetch-As-You-Render Query Prefetching
- Dedicated Devtools
(depending on features imported)
Examples
- 3.x
- Basic
- Suspense
- Multi-Page
- Caching - throttle network and then switch between pages
- Deduping requests - click
change page
in quick succession and monitor Network tab in devtools. - Garbage collection - click
remove page
- 2.x
Installation
npm install vue-query
or
yarn add vue-query
Usage
Attach vue-query to your Vue application
import { createApp } from "vue"; import { QueryClient, VUE_QUERY_CLIENT } from "vue-query"; import App from "./App.vue"; const queryClient = new QueryClient(); queryClient.mount(); createApp(App).provide(VUE_QUERY_CLIENT, queryClient).mount("#app");
Use query
import { useQuery } from "vue-query"; const query = useQuery("todos", getTodos);
If you need to update options on your query dynamically, make sure to pass it as reactive property
const id = ref(1); const queryKey = reactive(["todos", { id }]); const queryFunction = () => getTodos(id); const options = reactive({ staleTime: 60 * 60, onSuccess: () => {}, }); const query = useQuery(queryKey, queryFunction, options);
DevTools
This package provides built-in DevTools in the form of a Vue component.
Use VueQueryDevTools component in the main component of your application.
Check Examples section.
<script lang="ts">
import { defineComponent } from "vue";
import { VueQueryDevTools } from "vue-query/devtools";
export default defineComponent({
name: "App",
components: { VueQueryDevTools },
});
</script>
<template>
<VueQueryDevTools />
</template>