UNPKG

whistle.mock-plugins

Version:

Whistle 插件,用于快速创建 API 模拟数据

184 lines (150 loc) 6.94 kB
# 接口管理组件拆分与优化 ## 概述 将原本的 `InterfaceManagement.js` 文件(2100多行)拆分为多个更小、更易维护的组件文件,并优化响应管理UI,简化用户界面。 ## 文件结构 ``` src/components/interface-management/ ├── index.js # 统一导出文件 ├── constants.js # 常量定义(选项数组) ├── utils.js # 工具函数 ├── ResponseContentEditor.js # 合并的响应内容编辑器(包含管理功能) ├── InterfaceTestModal.js # 接口测试模态框 ├── PreviewModal.js # 预览模态框 └── README.md # 说明文档 ``` ## 组件优化说明 ### 1. 响应管理UI优化历程 #### 第一阶段:组件合并 - **合并组件**:将原来的 `ResponseManager``ResponseEditor` 合并为一个 `ResponseContentEditor` 组件 - **简化界面**:移除响应描述字段和内容统计信息,只保留响应名称设置 - **一体化操作**:响应的添加、删除、切换和内容编辑都在同一个Card组件中完成 #### 第二阶段:交互优化 - **智能下拉框**:将响应选择和名称编辑合并为一个既可选择又可编辑的交互组件 - **双模式切换** - **选择模式**:下拉选择器用于切换不同响应,右侧编辑按钮可进入编辑模式 - **编辑模式**:输入框直接编辑响应名称,确认或取消按钮完成操作 - **更简洁的布局**:从三列布局(选择/名称/操作)优化为两列布局(选择编辑/删除) ### 2. 各组件职责 #### constants.js - `contentTypes`: 内容类型选项 - `proxyTypes`: 代理类型选项 - `statusCodes`: 状态码选项 - `httpMethods`: HTTP方法选项 #### utils.js - `cleanJsonResponse()`: 清理JSON响应 - `isValidUrl()`: 验证URL格式 - `flushCache()`: 刷新缓存 - `refreshCacheAfterUpdate()`: 更新后刷新缓存 - `isUrlMatchPattern()`: URL匹配检查 - `formatResponseContent()`: 格式化响应内容 - `generateResponseId()`: 生成唯一响应ID #### ResponseContentEditor.js **优化后的响应内容编辑器组件**,负责: - 响应的增删改查操作 - 智能响应选择和名称编辑(双模式交互) - 响应内容编辑和格式化 - 预览功能集成 Props: - `form`: 表单实例 - `responses`: 响应数组 - `activeResponseId`: 当前激活的响应ID - `onPreview`: 预览回调 特色功能: - **双模式交互界面**:选择模式下可快速切换响应,编辑模式下可直接修改名称 - **一键切换**:点击编辑按钮立即进入编辑模式,支持回车确认和失焦保存 - **优雅的状态管理**:使用useState管理编辑状态,实现流畅的模式切换 #### InterfaceTestModal.js 接口测试模态框组件,负责: - 接口测试表单 - 测试结果显示 - URL匹配规则说明 - 测试失败错误处理 Props: - `visible`: 是否显示 - `onCancel`: 取消回调 - `editingInterface`: 当前编辑的接口 #### PreviewModal.js 预览模态框组件,负责: - 响应内容预览 - 格式化内容显示 Props: - `visible`: 是否显示 - `onCancel`: 取消回调 - `previewContent`: 预览内容对象 ## 主文件变更 新的 `InterfaceManagement.js` 文件: - 从 2126 行减少到约 800 行 - 导入优化后的 `ResponseContentEditor` 组件 - 简化响应相关的状态管理 - 保持完整的功能性 ## 使用方式 ```javascript // 导入优化后的组件 import { ResponseContentEditor, InterfaceTestModal, PreviewModal, contentTypes, proxyTypes, statusCodes, httpMethods, refreshCacheAfterUpdate, formatResponseContent, generateResponseId } from '../components/interface-management'; // 使用优化后的响应编辑器 <ResponseContentEditor form={form} responses={responses} activeResponseId={activeResponseId} onPreview={handlePreview} /> ``` ## 优化效果 ### UI简化与交互优化 1. **智能交互**:一个组件同时支持选择和编辑功能,减少界面元素 2. **操作直观**:下拉选择 + 编辑按钮的组合,用户操作更自然 3. **状态清晰**:选择模式和编辑模式有明确的视觉区分 4. **快速操作**:支持回车确认、失焦保存等快捷操作 ### 布局优化 - **从3列布局简化为2列**:选择编辑区域(span=20)+ 删除操作(span=4) - **更好的空间利用**:合并后的组件占据更大空间,操作更便捷 - **视觉统一**:保持与整体设计风格的一致性 ### 代码优化 1. **状态管理增强**:新增编辑状态和名称编辑状态管理 2. **交互逻辑清晰**:分离选择、编辑开始、编辑完成、编辑取消等逻辑 3. **事件处理完善**:支持多种编辑完成方式(回车、点击确认、失焦) ### 功能保持 1. **完整功能**:所有原有功能都得到保留和增强 2. **兼容性**:保持与现有数据结构的完全兼容 3. **稳定性**:优化过程中不破坏任何现有功能 ## 新的UI布局 优化后的响应模块布局: ``` ┌─ 响应内容编辑 ─ [添加响应] [预览] [格式化JSON] ─┐ │ │ │ ┌─ 选择响应 / 编辑名称 ────────────┐ ┌─ 操作 ─┐ │ │ │ 选择模式:[下拉选择器] [编辑按钮] │ │ [删除] │ │ │ │ 编辑模式:[输入框] [确认] [取消] │ │ │ │ │ └─────────────────────────────┘ └──────┘ │ │ │ │ 响应内容: │ │ ┌──────────────────────────────────────────┐ │ │ │ │ │ │ │ JSON内容编辑区域 │ │ │ │ │ │ │ └──────────────────────────────────────────┘ │ └──────────────────────────────────────────────┘ ``` ## 优势 1. **用户体验**:更智能的交互设计,一个组件完成多种操作 2. **界面简洁**:减少界面元素,视觉更清爽 3. **操作效率**:快速切换选择和编辑模式,提升工作效率 4. **代码质量**:清晰的状态管理和事件处理逻辑 5. **扩展性**:良好的组件设计,便于后续功能扩展 ## 兼容性 - 完全兼容原有功能和数据格式 - 保持所有API接口不变 - 用户界面和交互逻辑保持一致 - 构建和打包正常工作 - 向前兼容,新功能不影响现有数据