Skip to content

Files

Latest commit

 

History

History
83 lines (60 loc) · 2.77 KB

README.md

File metadata and controls

83 lines (60 loc) · 2.77 KB

Vue Query logo

npm version npm license bundle size npm

Vue Query

Hooks for fetching, caching and updating asynchronous data in Vue.

Support for Vue 2.x via vue-demi

Documentation

Visit https://tanstack.com/query/v4/docs/adapters/vue-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
  • (experimental) Suspense + Fetch-As-You-Render Query Prefetching
  • (experimental) SSR support
  • Dedicated Devtools
  • npm bundle size (depending on features imported)

Quick Start

  1. Install vue-query

    $ npm i @tanstack/vue-query
    # or
    $ pnpm add @tanstack/vue-query
    # or
    $ yarn add @tanstack/vue-query

    If you are using Vue 2.6, make sure to also setup @vue/composition-api

  2. Initialize Vue Query via VueQueryPlugin

    import { createApp } from "vue";
    import { VueQueryPlugin } from "@tanstack/vue-query";
    
    import App from "./App.vue";
    
    createApp(App).use(VueQueryPlugin).mount("#app");
  3. Use query

    import { defineComponent } from "vue";
    import { useQuery } from "@tanstack/vue-query";
    
    export default defineComponent({
      name: "MyComponent",
      setup() {
        const query = useQuery({ queryKey: ["todos"], queryFn: getTodos });
    
        return {
          query,
        };
      },
    });
  4. If you need to update options on your query dynamically, make sure to pass them as reactive variables

    const id = ref(1);
    const enabled = ref(false);
    
    const query = useQuery({ queryKey: ["todos", id], queryFn: () => getTodos(id), enabled });