safety-eval-service-frontend/.cursor/skills/specs/05-页面布局与通用UI规范/01-页面Layout/SKILL.md

61 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

2026-08-14 16:54:03 +08:00
---
name: jjb-page-layout
description: 定义 JJB 项目页面 Layout 规范。在使用 PageLayout、页面根容器或 jjb-react-admin-component 时使用。必须参考 MD/d.ts 文档,禁止猜测属性。
---
# 页面布局与通用 UI 规范
## 页面 Layout
- 除提示词明确不需要的情况下,所有页面 **必须** 使用:
```javascript
import PageLayout from '@cqsjjb/jjb-react-admin-component/PageLayout'
```
必须严格参考node_modules中对应依赖包的 MD 文档或 d.ts 文件!不得猜测组件属性!
- 禁止自定义页面根容器(除提示语明确要求的除外)
- **`PageLayout` 与外层包裹**
- **不建议** 再用无业务含义的 `div`(或其它块级节点)把 `PageLayout` 包一层,或把 `PageLayout` 当作仅用于套壳的子节点;页面组件应尽量 **`return` 时以 `PageLayout` 为根**(与上条「禁止自定义页面根容器」一致)。
- 若确有强需求必须外层包裹(例如错误边界、权限包装、实验性布局容器),**包裹层**须保证占满可视布局区域,避免内容区高度塌陷、内部滚动异常:至少设置 `style={{ width: '100%', height: '100%' }}`,或使用等价的样式类(如 `width: 100%; height: 100%`)。
### 代码演示
```jsx
import { Button } from 'antd';
import PageLayout from '@cqsjjb/jjb-react-admin-component/PageLayout';
function App() {
return (
<PageLayout title="用户中心">
</PageLayout>
)
}
```
### API
| 属性 | 说明 | 类型 | 默认值 |
|-----------------|:-----------|:---------------:|------:|
| title | 页面标题 | `string` | - |
| extra | 右上角扩展 | `ReactNode` | - |
| header | 自定义头部 | `ReactNode` | - |
| footer | 自定义底部 | `ReactNode` | - |
| history | 路由历史对象 | `History` | - |
| noStyle | 去除所有样式 | `boolean` | false |
| noBorder | 取消边框 | `boolean` | false |
| formLine | form 表单行 | `ReactNode[]` | - |
| formLineStyle | form 表单行样式 | `CSSProperties` | - |
| previous | 显示返回上一页 | `boolean` | false |
| transparent | 背景透明 | `boolean` | false |
| contentStyle | 内容区样式 | `CSSProperties` | - |
| footerStyle | 底部样式 | `CSSProperties` | - |
| pageHeaderStyle | 头部样式 | `CSSProperties` | - |
| style | 容器样式 | `CSSProperties` | - |
| onBack | 自定义返回事件 | `() => void` | - |
> **注意**`previous` 为 `true` 时 `history` 必传,否则点击返回无效。