refactor(PipConfigPanel): 混剪配置面板目录化拆分(547→106行, -81%) #1192
Reference in New Issue
Block a user
Delete Branch "refactor/pip-config-panel-split"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
变更内容
混剪配置面板组件目录化拆分,降低单文件复杂度:
新增文件
PipConfigPanel/index.tsx- 主组件(106行,组合层)PipConfigPanel/constants.ts- 常量(九宫格映射、动画选项、颜色池、ID生成)PipConfigPanel/hooks/usePipConfigPanel.ts- 核心逻辑Hook(图层增删改查、九宫格、宽高比锁定)PipConfigPanel/components/LayerList.tsx- 左侧图层列表PipConfigPanel/components/PipPreview.tsx- 迷你预览区PipConfigPanel/components/LayerConfig.tsx- 右侧图层配置面板(素材/位置/尺寸/圆角/透明度/时间/动画)删除文件
PipConfigPanel.tsx- 旧单文件(547行,已目录化替代)变更说明
🚀 预览环境已部署
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[usePipConfigPanel.ts: 79] handleReset 函数中的数据引用问题
handleReset中调用onChange({ ...DEFAULT_PIP_CONFIG })。虽然这创建了一个新的config对象引用,但其中的layers属性仍然引用了DEFAULT_PIP_CONFIG中定义的原始数组。如果父组件通过useEffect依赖config.layers的引用变化来触发副作用,重置操作可能无法触发该副作用。onChange({ ...DEFAULT_PIP_CONFIG, layers: [] })或者在常量定义时确保结构独立性。[LayerList.tsx: 39] 图片 URL 安全性校验
layer.material_url赋值给<img src={...}>。虽然现代浏览器在img标签中阻止javascript:协议执行,但允许data:或其他可能导致信息泄露的协议。为了增强安全性,建议在前端对 URL 进行简单的格式校验(如限制以http://或https://开头),防止用户输入恶意伪协议。http/https开头的链接。✅ 良好实践
as PipAnimType),并在LayerConfig中对输入进行了数值范围校验(如val >= 0 && val <= 100),有效防止了非法数据的提交。usePipConfigPanelhook 封装了复杂的图层逻辑,使用了useCallback和useMemo来优化性能和子组件渲染,结构清晰。handleWidthChange和handleHeightChange中正确处理了宽高比锁定的数学计算,并考虑了边界值(MIN_DIMENSION,MAX_DIMENSION),逻辑严谨。LayerList和PipConfigPanel主组件均正确处理了无图层或未选中图层时的空状态显示,用户体验良好。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-07-30 04:05:23 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1192 已关闭或合并,对应的预览环境已被清理。