# 分页 Composable 使用指南
## 概述
`usePagination` composable 是为了减少重复的分页和 URL 同步代码而创建的。它自动处理:
- 分页状态管理(页码、每页条数)
- URL 查询参数同步
- 查询条件变化时的页码重置
- 防抖和监听逻辑
## 基本用法
### 1. 简单分页(只有分页功能)
```vue
```
### 2. 带查询条件的分页
```vue
```
## 配置选项
```typescript
const { query } = usePagination(
{
// 查询条件初始值
keyword: "",
status: "",
},
{
defaultLimit: 20, // 默认每页条数,默认 10
defaultPage: 1, // 默认页码,默认 1
resetPageOnChange: true, // 查询条件变化时是否重置页码,默认 true
}
)
```
## 返回值说明
```typescript
const {
query, // 响应式查询对象,包含 page、limit 和自定义查询条件
updateRoute, // 手动更新 URL(通常不需要调用)
resetPage, // 重置页码到第一页
clearQuery, // 清空所有查询条件
syncFromRoute // 从 URL 同步到本地状态(通常不需要调用)
} = usePagination()
```
## 迁移指南
### 迁移前(旧代码)
```vue
```
### 迁移后(新代码)
```vue
```
## 优势
1. **减少重复代码**:URL 同步逻辑自动处理
2. **统一行为**:所有分页组件行为一致
3. **类型安全**:完整的 TypeScript 支持
4. **灵活配置**:支持自定义默认值和行为
5. **易于维护**:集中管理分页逻辑
## 注意事项
1. 查询条件变化时会自动重置页码(可通过 `resetPageOnChange: false` 禁用)
2. URL 同步是自动的,无需手动调用 `router.push`
3. 组件挂载时会自动从 URL 同步初始状态
4. 支持浏览器前进后退按钮