frandiox / vue-query

Hooks for fetching, caching and updating asynchronous data in Vue

Home Page:https://vue-query.vercel.app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vue Query logo

npm version npm license bundle size npm

build status codecov

Vue Query

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

Support for Vue 2.x via vue-demi

Based on react-query

Documentation

Visit https://vue-query.vercel.app

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. Attach Vue Query to the root component of your Vue application

    import { defineComponent } from "vue";
    import { useQueryProvider } from "vue-query";
    
    export default defineComponent({
      name: "App",
      setup() {
        useQueryProvider();
      },
    });
  2. Use query

    import { defineComponent } from "vue";
    import { useQuery } from "vue-query";
    
    export default defineComponent({
      name: "MyComponent",
      setup() {
        const query = useQuery("todos", getTodos);
    
        return {
          query,
        };
      },
    });
  3. 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({
      enabled: false,
    });
    
    const query = useQuery(queryKey, queryFunction, options);

About

Hooks for fetching, caching and updating asynchronous data in Vue

https://vue-query.vercel.app/

License:MIT License


Languages

Language:TypeScript 56.1%Language:Vue 43.5%Language:JavaScript 0.3%Language:Shell 0.1%