# 分页 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. 支持浏览器前进后退按钮