条件 return 前必须调用所有 hooks
症状与机制
- 初始在总览层:
navStack.length === 0→ 执行到if (isAtRoot) return (...) - 子层用到的 hooks 写在条件 return 之后,这一轮根本没被调用
- 点击进入下一层:不再提前 return,React 发现「这个组件比上次多调用了一批 hooks」
- React 判定 hook 顺序损坏 → 渲染崩溃 → 白屏
关键点:hooks 必须在每次 render 时以相同顺序、相同数量调用,不能放在条件 return 后面。这是组件结构问题,不是状态数据问题。
排查顺序(避免查错方向)
- 先看组件有没有「条件 return + 后面还有 hooks」的结构 —— 这是最低成本的一刀
- 再排除后端:command 返回格式不符、参数反序列化 panic
- 环境噪音要认出来:非 Tauri 环境(普通浏览器开
localhost)报Cannot read properties of undefined (reading 'invoke')是预期行为(没有__TAURI__),不是 root cause
相关
- 过期响应不能覆盖当前编辑内容 —— 同源:前端状态生命周期问题,症状都在界面上、根因不在数据
- 讲bug先讲现象再讲根因