Skip to content

弹窗 UI (Popup)

更新时间:2026-07-14;使用模型:Codex(GPT-5);用户:Jsmond2016


概述

Popup 是扩展的主要用户界面,使用 React 19 构建,通过 @vitejs/plugin-react 在 Vite 中编译。当用户点击浏览器工具栏中的扩展图标时,弹出面板显示。

技术栈

技术用途
React 19UI 框架
ahooksReact hooks 工具库(useMount、useRequest、useBoolean 等)
webextension-polyfill浏览器 API 兼容层
CSS原生 CSS(无 UI 组件库)

页面布局

┌─────────────────────────────────────┐
│  PopupHero                          │
│  页面标题/URL · Apifox 状态 · 设置  │
├─────────────────────────────────────┤
│  RequestHistoryPanel                │
│  请求列表 · 过滤摘要 · 多选操作     │
├─────────────────────────────────────┤
│  RequestParamsPanel (可选)          │
│  复制选项开关                       │
├─────────────────────────────────────┤
│  NotePanel                          │
│  备注输入 · 快速模板 · 复制按钮     │
├─────────────────────────────────────┤
│  PopupFooter                        │
│  版本 · 版权                        │
└─────────────────────────────────────┘

组件职责

组件职责
Popup.tsx页面编排:状态管理、主流程编排、数据加载
PopupHero.tsx顶部品牌区、Apifox 状态指示、设置入口
PopupBody.tsx主内容切换(功能视图 / 设置视图)
RequestHistoryPanel.tsx请求列表展示、接口名展示、过滤、多选和单接口复制
RequestParamsPanel.tsx复制选项配置(入参、环境等)
NotePanel.tsx备注输入、快速模板选择、复制/操作按钮
SettingsPanel.tsx完整设置表单
ScrollNavFab.tsx滚动导航浮动按钮
ToastMessage.tsx操作反馈提示

自定义 Hooks

Hook职责
useTabRequests()从后台加载请求、Apifox 匹配、异常评估、实时更新
useApifox()Apifox 状态管理、刷新操作
usePopupFeedbackActions()完整反馈复制、单接口复制、AIO 复制、Quick Mock 操作
usePopupSettingsState()设置表单状态管理
useSelection()请求多选逻辑(含 Shift 键范围选择)
useToast()Toast 生命周期管理
useScrollNav()滚动状态检测

三种模式

模式设置值特点
默认模式default基础复制功能
开发者模式developer增加"快速 Mock"按钮
测试者模式tester显示"复制到 AIO"按钮 + 迭代选择器

环境配置、环境快捷跳转和复制环境信息仅在开发者模式展示。环境按组管理,每组固定包含 LOCAL、FAT、UAT、PROD 四个槽位。

基于 MIT 协议开源