在React Router v6中,你可以使用useRouter钩子来实现路由重写。你可以在/discussions/:id路径上使用useRouter来重写为/discussions/:id/channels/0

首先,你需要安装React Router v6,然后在你的组件中导入相关的 hooks 和组件:

import { useRoutes, useHref } from 'react-router-dom';
import { useRouter } from 'react-router';

然后,你可以在组件中使用useRoutes hook 来定义路由规则,并在其中设置重写逻辑:

const routes = [
  {
    path: '/discussions/:id',
    element: <Discussion />,
    children: [
      { path: 'channels/0', element: <DiscussionChannels /> },
      { path: '*', element: <Navigate to="/discussions/:id/channels/0" replace /> },
    ],
  },
];

const App = () => {
  const element = useRoutes(routes);
  return element;
};

在上面的代码中,我们定义了一个名为routes的数组,其中包含了我们的路由规则。在 /discussions/:id 路径下,我们使用了一个 Discussion 组件作为根元素,并定义了两个子路由。第一个子路由是 /channels/0,它使用 DiscussionChannels 组件,表示 0 频道。第二个子路由是通配符 *,它会重定向到 /discussions/:id/channels/0 路径。

最后,我们在 App 组件中使用 useRoutes 来渲染匹配的路由。

注意:在React Router v6中,我们使用 element 属性来表示要渲染的组件,而不是 component 属性。

希望以上信息对你有所帮助

reactjs v18 router v6 我想把 discussionsid rewrite 成 discussionsidchannels0

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

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