You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router Dom v6 useBlocker使用报错求助:需在数据路由内使用

React Router v6 useBlocker 使用报错解决方案
  • 报错原因:useBlocker 是 React Router v6.4+ 推出的**数据路由(Data Router)**专属钩子,你当前使用的 BrowserRouter 属于传统客户端路由,不支持这类数据路由相关 API,因此会触发该错误。

  • 解决步骤:

    1. 替换路由组件:将 BrowserRouter 替换为数据路由的 RouterProvider,通过 createBrowserRouter 定义路由配置
    2. 迁移路由结构:把原有的路由嵌套逻辑转移到 createBrowserRouter 的配置对象中
    3. 重新使用自定义 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:10:29