2025-12-19 Next.js与ChakraUI:实现优雅的未保存更改导航防护 Next.js与ChakraUI:实现优雅的未保存更改导航防护 正文:在单页应用(SPA)开发中,未保存更改时的路由跳转是一个常见痛点。用户可能无意间关闭标签页或点击返回按钮,导致数据丢失。本文将基于 Next.js 和 Chakra UI,从零构建一套优雅的解决方案,兼顾用户体验与代码可维护性。核心逻辑拆解导航防护的关键在于监听路由变化事件,并在离开当前页面前触发确认逻辑。Next.js 的 next/router 提供了 beforePopState 和 routeChangeStart 等事件,而 Chakra UI 的 useDisclosure 和自定义弹窗能完美承载交互层。以下是实现步骤: 监听路由变化通过 useEffect 订阅路由事件,当检测到导航尝试时,检查当前页面的「脏数据」状态: import { useRouter } from 'next/router'; function Page() { const router = useRouter(); const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false); us... 2025年12月19日 33 阅读 0 评论