# Search 查询组件
基于 `Form` 组件封装,支持收缩展开。
Search 组件位于 [src/components/Search](https://github.com/kailong321200875/vue-element-plus-admin/tree/master/src/components/Search) 内
::: warning 注意
推荐使用 `tsx` 来使用 `Search` 组件
:::
## 用法
### 基础用法
更复杂例子,请[在线预览](https://element-plus-admin.cn/#/components/search)
```vue
```
### useSearch
对于复杂的场景,可以配合 `useSearch` 来使用。
```vue
{{ t('searchDemo.grid') }}
{{ t('searchDemo.restore') }} {{ t('searchDemo.grid') }}
{{ t('searchDemo.button') }} {{ t('searchDemo.position') }}
{{ t('searchDemo.bottom') }} {{ t('searchDemo.position') }}-{{ t('searchDemo.left') }}
{{ t('searchDemo.bottom') }} {{ t('searchDemo.position') }}-{{ t('searchDemo.center') }}
{{ t('searchDemo.bottom') }} {{ t('searchDemo.position') }}-{{ t('searchDemo.right') }}
{{ t('formDemo.select') }} {{ t('searchDemo.dynamicOptions') }}
{{ t('searchDemo.deleteRadio') }}
{{ t('searchDemo.restoreRadio') }}
{{ t('formDemo.setValue') }}
{{ t('searchDemo.search') }} {{ t('searchDemo.loading') }}
{{ t('searchDemo.reset') }} {{ t('searchDemo.loading') }}
```
#### 参数介绍
```ts
const { searchRegister, searchMethods } = useSearch()
```
**register**
`searchRegister` 用于注册 `useSearch`,如果需要使用 `useSearch` 提供的 `api`,必须将 `searchRegister` 传入组件的 `onRegister`
**formMethods**
| 方法名 | 说明 | 回调参数 |
| ---- | ---- | ---- |
| setValues | 用于设置表单值 | (data: Recordable) => void |
| setProps | 用于设置表单属性 | (props: Recordable) => void |
| delSchema | 用于删除表单结构 | (field: string) => void |
| addSchema | 用于新增表单结构 | (formSchema: FormSchema, index?: number) => void |
| setSchema | 用于编辑表单结构 | (schemaProps: FormSetPropsType[]) => void |
| getFormData | 用于获取表单数据 | `() => Promise` |
## Search 属性
| 属性 | 说明 | 类型 | 可选值 | 默认值 |
| ---- | ---- | ---- | ---- | ---- |
| schema | 生成 Search 的布局结构数组,[详见](#Schema) | `FormSchema` | - | [] |
| isCol | 是否需要栅格布局 | `boolean` | - | true |
| labelWidth | 表单 label 宽度 | `string`/`number` | - | auto |
| layout | 操作按钮风格位置 | `string` | inline/bottom | inline |
| buttomPosition | 底部操作按钮的对齐方式 | `string` | left/center/right | center |
| showSearch | 是否显示查询按钮 | `boolean` | - | true |
| showReset | 是否显示重置按钮 | `boolean` | - | true |
| expand | 是否显示伸缩按钮 | `boolean` | - | false |
| expandField | 伸缩的界限字段 | `string` | - | - |
| inline | 是否是行内 | `boolean` | - | true |
| removeNoValueItem | 是否自动去除空值 | `boolean`| - | true |
| model | 初始化数据 | `object` | - | - |
| searchLoading | 查询按钮加载状态 | `boolean` | - | false |
| resetLoading | 重置按钮加载状态 | `boolean` | - | false |
## Search 事件
| 方法名 | 说明 | 回调参数 |
| ---- | ---- | ---- |
| search | 查询后的回调 | data: Recordable |
| reset | 重置后的回调 | data: Recordable |
## Search 方法
| 方法名 | 说明 | 回调参数 |
| ---- | ---- | ---- |
| setValues | 用于设置表单值 | (data: Recordable) => void |
| setProps | 用于设置表单属性 | (props: Recordable) => void |
| delSchema | 用于删除表单结构 | (field: string) => void |
| addSchema | 用于新增表单结构 | (formSchema: FormSchema, index?: number) => void |
| setSchema | 用于编辑表单结构 | (schemaProps: FormSetPropsType[]) => void |
| getElFormExpose | 用于获取 Form 组件的实例 | `() => Promise` |