---
name: jjb-search-form
description: 定义 JJB 项目搜索表单组件使用规范。在使用 SearchForm、formLine、Form.Item 或 PageLayout 集成搜索区时使用。必须参考 MD/d.ts 文档。
---
# 搜索区规范(一级页面)
## 搜索表单组件
- 除提示词明确不需要的情况下,所有页面搜索区 **必须** 使用:
```javascript
import SearchForm from '~/components/SearchForm'
```
必须严格参考node_modules中对应依赖包的 MD 文档或 d.ts 文件!不得猜测组件属性!
- **FormLine 规范**:
`SearchForm` 的 `formLine` 属性中,所有搜索控件 **必须** 使用 `ControlWrapper` 封装:
```javascript
import ControlWrapper from '@cqsjjb/jjb-react-admin-component/ControlWrapper'
```
| 控件 | 写法 |
|------|------|
| 文本输入 | `` |
| 下拉选择 | `...` |
| 日期范围 | `` |
| 级联选择 | `` |
| 树选择 | `` |
**注意**:`ControlWrapper` 没有 `Custom` 属性,不要自行拼装。
- **布局挂载规范**:
- **标准布局**:若页面结构简单,**必须**将 `SearchForm` 放置在 `PageLayout` 的 `formLine` 属性中,以实现搜索区与页面头部的紧凑集成。
- **复杂布局**:若搜索需求涉及复杂交互或多行展示,可根据实际场景将 `SearchForm` 放置于 `PageLayout` 的主体内容区。
### 代码演示
```jsx
import React, { useState, useEffect } from 'react';
import { Button, Form, Table } from 'antd';
import PageLayout from '@cqsjjb/jjb-react-admin-component/PageLayout';
import SearchForm from '~/components/SearchForm';
import ControlWrapper from '@cqsjjb/jjb-react-admin-component/ControlWrapper';
import { tools } from '@cqsjjb/jjb-common-lib';
const { router } = tools;
function DemoList(props) {
const [form] = Form.useForm();
const [loading, setLoading] = useState(false);
const getData = async () => {
setLoading(true);
try {
// 请求数据
} finally {
setLoading(false);
}
};
useEffect(() => {
form.setFieldsValue(router.query);
getData();
}, []);
return (
,
]}
onReset={(values) => {
router.query = { ...router.query, ...values, current: 1, pageSize: 10 };
getData();
}}
onFinish={(values) => {
router.query = { ...router.query, ...values, current: 1, pageSize: 10 };
getData();
}}
/>
{/* Table ... */}
);
}
```