React Router Dom v6 useBlocker使用报错求助:需在数据路由内使用
React Router v6 useBlocker 使用报错解决方案
报错原因:
useBlocker是 React Router v6.4+ 推出的**数据路由(Data Router)**专属钩子,你当前使用的BrowserRouter属于传统客户端路由,不支持这类数据路由相关 API,因此会触发该错误。解决步骤:
- 替换路由组件:将
BrowserRouter替换为数据路由的RouterProvider,通过createBrowserRouter定义路由配置 - 迁移路由结构:把原有的路由嵌套逻辑转移到
createBrowserRouter的配置对象中 - 重新使用自定义 Prompt:完成上述调整后,在组件中调用基于
useBlocker实现的自定义组件即可正常运行
- 替换路由组件:将
示例代码片段:
// App.js import { createBrowserRouter, RouterProvider } from 'react-router-dom'; import MyComponent from './MyComponent'; const router = createBrowserRouter([ { path: '/', element: <MyComponent />, }, // 其他路由配置... ]); function App() { return <RouterProvider router={router} />; } export default App;补充说明:已有很多开发者成功在新版 React Router 中使用
useBlocker,核心前提就是切换到数据路由模式——这是 React Router v6.4+ 对路由体系的重要更新,数据路由还附带了useLoaderData、useActionData等新能力。
内容的提问来源于stack exchange,提问作者Veljko89
相关产品推荐
相关产品推荐

