fix(viral-video) P0: 修复GET /models响应包装导致页面白屏,数组操作加防御 #2163
Reference in New Issue
Block a user
Delete Branch "fix/viral-video-p0-models-api-wrapper"
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?
P0 白屏根因
后端 GET /api/v1/viral-video/models 返回 {"models": [...]} 包装对象,前端 getViralVideoModels() 声明返回 ViralVideoModel[] 直接把 r.data 当数组使用,useEffect 里 list.some(...) 在对象上调用抛 TypeError: s.some is not a function,页面在初始化阶段崩溃。
修复
验证
紧急 P0,请求尽快 review + 合入。
根因:后端 GET /api/v1/viral-video/models 返回 {"models": [...]} 包装对象, 前端 getViralVideoModels() 声明返回 ViralVideoModel[] 并在 .then 直接对 r.data 调 .some(), 实际 r.data 是对象而非数组,导致 TypeError: s.some is not a function 白屏。 修复: - 新增 ViralVideoModelsResponse 类型 - getViralVideoModels() 改为泛型 ViralVideoModelsResponse,解析时兼容数组/包装两种返回 - 模型加载 useEffect:list/supported_resolutions 加 Array.isArray 防御 - 模型切换 onChange:m.supported_resolutions 加防御兜底 [480p,720p,1080p] - 清晰度 Select 过滤池:curM?.supported_resolutions 加 Array.isArray 守卫 - options 渲染:filter 掉非对象空项,label fallback 到 key - max_duration 加 typeof === 'number' 防御CI全绿,自动审批通过。
CI全绿,自动审批通过。
🚀 预览环境已部署
🗑️ 预览环境已清理
PR #2163 已关闭或合并,对应的预览环境已被清理。