2025-08-04 14:11:36 +08:00
|
|
|
|
# Upload 组件使用说明
|
2025-07-28 16:53:18 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
## MainImgUpload 主图封面上传组件
|
2025-07-28 16:53:18 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
### 功能特点
|
2025-07-28 16:53:18 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
- 只支持上传一张图片作为主图封面
|
|
|
|
|
|
- 上传后右上角显示删除按钮
|
|
|
|
|
|
- 支持图片预览功能
|
|
|
|
|
|
- 响应式设计,适配移动端
|
|
|
|
|
|
- 样式参考VideoUpload组件风格
|
2025-07-30 15:19:15 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
### 使用方法
|
2025-07-28 16:53:18 +08:00
|
|
|
|
|
|
|
|
|
|
```tsx
|
2025-08-04 14:11:36 +08:00
|
|
|
|
import MainImgUpload from "@/components/Upload/MainImgUpload";
|
2025-07-29 16:06:37 +08:00
|
|
|
|
|
|
|
|
|
|
const MyComponent = () => {
|
2025-08-04 14:11:36 +08:00
|
|
|
|
const [mainImage, setMainImage] = useState<string>("");
|
2025-07-29 16:06:37 +08:00
|
|
|
|
|
|
|
|
|
|
return (
|
2025-08-04 14:11:36 +08:00
|
|
|
|
<MainImgUpload
|
|
|
|
|
|
value={mainImage}
|
|
|
|
|
|
onChange={setMainImage}
|
|
|
|
|
|
maxSize={5} // 最大5MB
|
|
|
|
|
|
showPreview={true} // 显示预览按钮
|
2025-07-29 16:06:37 +08:00
|
|
|
|
disabled={false}
|
|
|
|
|
|
/>
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|
2025-07-28 16:53:18 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
### Props 参数
|
2025-07-29 10:06:40 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
| 参数 | 类型 | 默认值 | 说明 |
|
|
|
|
|
|
| ----------- | --------------------- | ------ | ---------------- |
|
|
|
|
|
|
| value | string | '' | 当前图片URL |
|
|
|
|
|
|
| onChange | (url: string) => void | - | 图片URL变化回调 |
|
|
|
|
|
|
| disabled | boolean | false | 是否禁用 |
|
|
|
|
|
|
| className | string | - | 自定义样式类名 |
|
|
|
|
|
|
| maxSize | number | 5 | 最大文件大小(MB) |
|
|
|
|
|
|
| showPreview | boolean | true | 是否显示预览按钮 |
|
2025-07-29 10:06:40 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
### 样式特点
|
2025-07-30 15:19:15 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
- 上传区域:200x200px 的虚线边框区域
|
|
|
|
|
|
- 图片预览:上传后显示图片,鼠标悬停显示操作按钮
|
|
|
|
|
|
- 删除按钮:右上角红色删除图标
|
|
|
|
|
|
- 预览按钮:眼睛图标,点击在新窗口预览
|
|
|
|
|
|
- 响应式:移动端自动调整尺寸
|
2025-07-30 15:19:15 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
### 文件结构
|
2025-07-30 15:19:15 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
```
|
|
|
|
|
|
src/components/Upload/
|
|
|
|
|
|
├── MainImgUpload.tsx # 主图上传组件
|
|
|
|
|
|
├── mainImgUpload.module.scss # 主图上传样式
|
|
|
|
|
|
├── VideoUpload.tsx # 视频上传组件
|
|
|
|
|
|
└── index.module.scss # 通用上传样式
|
2025-07-29 16:06:37 +08:00
|
|
|
|
```
|
2025-07-29 10:06:40 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
### 技术实现
|
2025-07-30 15:19:15 +08:00
|
|
|
|
|
2025-08-04 14:11:36 +08:00
|
|
|
|
- 基于 antd Upload 组件
|
|
|
|
|
|
- 使用 antd-mobile 的 Toast 提示
|
|
|
|
|
|
- 支持 FormData 上传
|
|
|
|
|
|
- 自动处理文件验证和错误提示
|
|
|
|
|
|
- 集成项目统一的API请求封装
|