Skip to content

Vue Router Integration

When using Vue Router, an adapter keeps your query refs/reactive state in sync with navigations and browser back/forward.

Per‑hook adapter

Pass the adapter directly when you create refs / reactive objects.

vue
<script setup lang="ts">
import { queryRef, queryReactive, createVueRouterAdapter } from 'vue-qs';
import { useRouter } from 'vue-router';

const adapter = createVueRouterAdapter(useRouter());

const page = queryRef('page', { defaultValue: 1, parse: Number, queryAdapter: adapter });
const queryState = queryReactive({ q: { defaultValue: '' } }, { adapter });
</script>

Provide it once so every hook can auto‑detect it.

ts
// main.ts
import { createApp } from 'vue';
import { createVueQsPlugin, createVueRouterAdapter } from 'vue-qs';
import { router } from './router';
import App from './App.vue';

createApp(App)
  .use(createVueQsPlugin({ queryAdapter: createVueRouterAdapter(router) }))
  .use(router)
  .mount('#app');

Released under the MIT License.