Skip to content

快速开始

积极开发提醒

该库目前正在积极开发中,尚未准备好用于生产环境。API 可能在版本之间发生重大变化。请谨慎使用,并预期会有破坏性更改。

Type‑safe, reactive URL query params for Vue - 把常用的界面状态(搜索词、页码、筛选条件)放进 URL,这样刷新、分享、前进/后退都能保持。vue-qs 提供两个组合式函数和现代化错误处理来轻松实现这些功能。

安装

bash
npm i vue-qs
# 或者
pnpm add vue-qs
# 或者
bun add vue-qs

对等依赖:vue@^3.3。可选:vue-router@^4.2(需要路由集成时)。

单个参数 (ref)

vue
<script setup lang="ts">
import { queryRef } from 'vue-qs';

// 绑定到 ?name=... 缺失时使用默认值
const name = queryRef('name', { defaultValue: '' });
</script>

<template>
  <input v-model="name" placeholder="你的名字" />
</template>

多个参数 (reactive 对象)

vue
<script setup lang="ts">
import { queryReactive } from 'vue-qs';

const queryState = queryReactive({
  search: { defaultValue: '' },
  page: {
    defaultValue: 1,
    parse: (value) => (value ? Number(value) : 1),
    serializeFunction: (value) => String(value),
  },
});
</script>

<template>
  <input v-model="queryState.search" />
  <button @click="queryState.page++">下一页</button>
</template>

Hook 返回什么

  • queryRef(name, options) → 一个普通 ref。
  • queryReactive(schema, options) → 一个响应式对象。
  • 值等于默认值时默认不出现在 URL(可通过 shouldOmitDefault: false 关闭)。

继续查看 示例 / 双向同步 / 编解码器 获取更多用法。

Released under the MIT License.