-
fix(登录): 带 code 进 /plans 时卡在「正在进入召回工作台…」 · 16e2134b
复现条件:localStorage **已经有票**(第二次进来)+ URL 带 ?code=。 干净浏览器不复现,所以第一次测没发现。 时序: ① store 反水合 → isAuthenticated 立刻 true → AuthGate 放行 children ② /plans 落地解析器跑起来 → 主管 → router.replace('/supervisor') ③ `await exchangeCode()` 才回来,然后 replaceState 把地址写回 /plans ③ 把 ② 那次跳转冲掉了 —— Next 的路由树被拉回 plans(实测 history.state 里 `__PRIVATE_NEXTJS_INTERNALS_TREE` 停在 plans),而解析器已经 return、不会再试, 于是永远停在占位文案上。 ⇒ 剥 code 与 exchange 成不成功无关,提到 await **之前**做。本 effect 跑在首次提交上 (那时 mounted 还是 false、children 尚未挂载),任何页面的落地跳转都必然在它之后, 不会再被回写覆盖。⚠ ️ replaceState 第二个参数改传 window.history.state 而不是 `{}` —— App Router 的路由树就存在 history state 里,传空对象等于把它抹掉。 实测三种都过: 已登录 + /plans?code= → 落 /supervisor 已登录 + /plans?exec=1&code= → 走执行页(exec=1 没被剥 code 时一起吃掉) 清空 storage + /plans?code= → 落 /supervisor Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| asr-sensevoice | Loading commit data... | |
| pac-docs | Loading commit data... | |
| pac-service | Loading commit data... | |
| pac-web | Loading commit data... |