在 React Router v6 中,你可以使用 `useRouter` 钩子来实现路由重写。你可以在 `/discussions/:id` 路径上使用 `useRouter` 来重写为 `/discussions/:id/channels/0`。\n\n首先,你需要安装 React Router v6,然后在你的组件中导入相关的 hooks 和组件:\n\njavascript\nimport { useRoutes, useHref } from 'react-router-dom';\nimport { useRouter } from 'react-router';\n\n\n\n然后,你可以在组件中使用 `useRoutes` hook 来定义路由规则,并在其中设置重写逻辑:\n\njavascript\nconst routes = [\n {\n path: '/discussions/:id',\n element: <Discussion />,\n children: [\n { path: 'channels/0', element: <DiscussionChannels /> },\n { path: '*', element: <Navigate to="/discussions/:id/channels/0" replace /> },\n ],\n },\n];\n\nconst App = () => {\n const element = useRoutes(routes);\n return element;\n};\n\n\n在上面的代码中,我们定义了一个名为 `routes` 的数组,其中包含了我们的路由规则。在 `/discussions/:id` 路径下,我们使用了一个 `Discussion` 组件作为根元素,并定义了两个子路由。第一个子路由是 `/channels/0`,它使用 `DiscussionChannels` 组件,表示 `0` 频道。第二个子路由是通配符 `*`,它会重定向到 `/discussions/:id/channels/0` 路径。\n\n最后,我们在 `App` 组件中使用 `useRoutes` 来渲染匹配的路由。\n\n注意:在 React Router v6 中,我们使用 `element` 属性来表示要渲染的组件,而不是 `component` 属性。\n\n希望以上信息对你有所帮助!

React Router v6 路由重写: 将 /discussions/:id 重定向到 /discussions/:id/channels/0

原文地址: https://www.cveoy.top/t/topic/qh6B 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录