一个 NextJS 后退不刷新页面的问题

2024-07-16

今天整 NextJS 又发现一个问题,就是路由后退之后页面内容不会刷新,排查后发现是有一处使用了 history.replaceState 方法的代码导致的,一旦有一个历史记录并非 NextJS 自身创建,就会导致这个异常现象。

首先为什么要用这个方法呢,这是因为 next-intl 这个多语言库在 Pages Router 模式下,会强制在地址增加语言前缀(例如 /zh-CN/about),没错又是该死的多语言才出现的问题。而产品又说需要去除掉它(和我之前那个官网项目又完全相反),同事没想到什么方案就采用了如此策略,强行去除语言前缀,并且绕开可能反复跳转的问题。

我去看了 对应文档,他只提到 App Router 模式才允许取消这个前缀,真的是恶心到了 🤡 后期继续看看有没有解决方案吧...

小雨 一般
概览页 时间轴
奇趣音乐盒 技术源于 Kico Player
Emmm,这里是歌词君