# usePageSearch Hook

`usePageSearch` 是一个 Vue 3 Composition API hook，用于处理数据的搜索、分页和加载状态。

## 功能

- **数据搜索**：提供数据搜索功能。
- **自动和手动分页**：支持自动或手动更新分页。
- **加载状态**：管理数据加载的状态。
- **数据追加**：支持在现有数据上追加新数据。
- **支持轮询**：接口轮询。


## 使用方法

<div class="options-api">

```vue
<script setup>
  import { usePageSearch } from "@ksconsole/hooks";
  import { ref } from 'vue'
  import { getList } from "./getList";

  // 页面查询逻辑 推荐使用vue响应式包裹
  const searchParams = ref({
    keyword: ''
  })
  const {
    tableData,
    pageNum,
    pageSizeChange,
    total,
    search,
    refresh,
    isLoading
  } = usePageSearch(getList, searchParams)
```

</div>

## 参数

`usePageSearch` 接受三个参数：
- `service`: 必须。这是一个返回 Promise 的函数，通常用于调用 API 获取数据。
- `requestParams`: 可选。这是传递给 service 函数的默认参数。
- `options`: 可选。用于自定义 hook 行为的配置对象。
  options 配置详情
  <table class="md-table">
        <thead>
            <tr>
                <th>参数名</th>
                <th>类型</th>
                <th>默认值</th>
                <th>描述</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>immediate</td>
                <td>Boolean</td>
                <td>true</td>
                <td>组件挂载后是否立即执行搜索。</td>
            </tr>
              <tr>
                <td>pollingInterval</td>
                <td>Number</td>
                <td></td>
                <td>轮询间隔，单位为毫秒。如果值大于 0，则处于轮询模式</td>
            </tr>
            <tr>
                <td>pageSize</td>
                <td>Number</td>
                <td>10</td>
                <td>每页数据条数。</td>
            </tr>
            <tr>
                <td>pageNum</td>
                <td>Number</td>
                <td>1</td>
                <td>初始页码。</td>
            </tr>
            <tr>
                <td>resultHandle</td>
                <td>Function</td>
                <td>(res) =&gt; {}</td>
                <td>处理从 service 返回的结果。</td>
            </tr>
            <tr>
                <td>append</td>
                <td>Boolean</td>
                <td>false</td>
                <td>是否在现有数据基础上追加数据。</td>
            </tr>
            <tr>
                <td>pageProps</td>
                <td>Object</td>
                <td>{ page: 'page', pageSize: 'pageSize' }</td>
                <td>用于分页的参数名称。</td>
            </tr>
        </tbody>
    </table>

## 返回值
<table class="md-table">
        <thead>
            <tr>
                <th>名称</th>
                <th>类型</th>
                <th>描述</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>total</td>
                <td>ref(Number)</td>
                <td>数据总数。</td>
            </tr>
            <tr>
                <td>isLoading</td>
                <td>ref(Boolean)</td>
                <td>当前是否在加载数据。</td>
            </tr>
            <tr>
                <td>search</td>
                <td>Function</td>
                <td>执行搜索的方法。</td>
            </tr>
            <tr>
                <td>start</td>
                <td>Function</td>
                <td>启动轮询。</td>
            </tr>
            <tr>
                <td>stop</td>
                <td>Function</td>
                <td>停止轮询。</td>
            </tr>
            <tr>
                <td>refresh</td>
                <td>Function</td>
                <td>重置并重新搜索的方法。</td>
            </tr>
            <tr>
                <td>pageNum</td>
                <td>ref(Number)</td>
                <td>当前页码。</td>
            </tr>
            <tr>
                <td>pageSize</td>
                <td>ref(Number)</td>
                <td>每页显示数据数量。</td>
            </tr>
            <tr>
                <td>tableData</td>
                <td>ref(Array)</td>
                <td>当前页面数据。</td>
            </tr>
            <tr>
                <td>pages</td>
                <td>computed(Number)</td>
                <td>计算得出的总页数。</td>
            </tr>
            <tr>
                <td>hasMore</td>
                <td>computed(Boolean)</td>
                <td>是否还有更多数据可以加载。</td>
            </tr>
            <tr>
                <td>pageSizeChange</td>
                <td>Function</td>
                <td>改变每页显示数据数量并搜索新数据的方法。</td>
            </tr>
            <tr>
                <td>pageNumChange</td>
                <td>Function</td>
                <td>改变页数并搜索新数据的方法。</td>
            </tr>
            <tr>
                <td>pageChange</td>
                <td>Function</td>
                <td>适配内部封装的分页插件，传入对象{ limit: 10, value: 1 }，其中limit为每页限制条数、value为页码</td>
            </tr>
        </tbody>
    </table>
