我们正在迁移到V6.4,并按照文档的建议使用createRoutesFromElements将我们的路由迁移到新的createBrowserRouter路由.

我们的设置如下所示

const router = createBrowserRouter(
  createRoutesFromElements(--> our routes go here <--)
);

root.render(
  <React.StrictMode>
    <ChakraProvider theme={theme}>
      <RouterProvider router={router} />
    </ChakraProvider>
  </React.StrictMode>
);

Auth0文档说Auth0提供程序应该嵌套在提供程序下.如何使用新路由来实现这一点?

我们try 在createRoutesFromElements路由中包装身份验证提供程序,但不起作用.我也try 过这样做,但我们收到了错误.

<RouterProvider router={router} >
    <Auth0Provider />
</RouterProvider>

有没有人能帮我了解一下在哪里放置Auth0提供程序?谢谢你,????

推荐答案

似乎只需要在路由组件提供的路由上下文中呈现Auth0Provider.RouterProvider不会像那样带子元素go JSX.我建议将Auth0Provider组件呈现在Layout Route上,作为"从元素创建路由"路由配置的一部分.作为布局,路由Auth0Provider包装AN Outlet并将其认证上下文提供给其子react 树的所有嵌套路由.

示例:

import { Outlet } from 'react-router-dom';

const Auth0ProviderLayout = () => (
  <Auth0Provider>
    <Outlet />
  </Auth0Provider>
);

const router = createBrowserRouter(
  createRoutesFromElements(
    <Route element={<Auth0ProviderLayout />}>
      ... other nested routes ...
    </Route>
  )
);

root.render(
  <React.StrictMode>
    <ChakraProvider theme={theme}>
      <RouterProvider router={router} />
    </ChakraProvider>
  </React.StrictMode>
);

Reactjs相关问答推荐

构建next.js项目时状态不变,但在dev服务器中

如何避免react 使用ESLINTreact 挂钩/穷举-deps进行第一次呈现

如何将Redux工具包添加到expo (SDK 50)项目?

为多租户SSO登录配置Azure AD应用程序

在Reaction中导入';图片&文件夹时出错

状态更改时的rtk查询触发器

useEffect firebase 清理功能如何工作?

如何使用react-router-dom保护嵌套在受保护路由中的嵌套路由?

在reactjs中刷新页面时丢失状态值

Chakra UI:如何在选中状态下设置复选框 colored颜色

无法使axiosmockadapter正常工作

如何在 React 过滤器中包含价格过滤器逻辑?

Zod 验证模式根据另一个数组字段使字段成为必需字段

在 React JS 中编辑表格数据

React - 使用 React 显示错误和积极alert

如果传递给挂钩的数据需要事先修改,如何使用自定义挂钩?

如何使用 babel 将 SVG 转换为 React 组件?

如何在 v6.4 中将 Auth0 提供程序与新的 createBrowsereRouter 一起使用?

单击三个按钮之一后如何显示特定按钮的内容?单击其中一个按钮后应隐藏所有按钮

为什么我不能使用 formik 更改此嵌套对象中的值