You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在React-Router v7中配置嵌套路由为站点首页,实现/与/home/welcome路径同时正常可用?

如何在React-Router v7中配置嵌套路由为站点首页,实现/与/home/welcome路径同时正常可用?

我来帮你搞定这个React Router v7的路由配置问题!你遇到的重复index路由报错、首页布局不渲染的情况,其实是没搞对根路径的重定向逻辑和嵌套路由的归属关系~

你的核心需求是让//home/welcome都能正常访问,并且访问这两个路径时都能渲染home.tsx的页面元素,同时避免路由重复的报错。之前的配置问题在于:

  • 根目录的index路由是独立于home子路由树的,所以它不属于home.tsx的子路由,自然不会渲染home.tsx的布局;
  • 这个根indexhome下的welcome路由路径重复,导致React Router抛出错误;
  • 删掉根index后,/路径又没有对应的路由,直接失效。

正确的解决思路是:用根路径重定向替代原来的根index路由,让/自动跳转到/home/welcome,同时保留home子树里的welcome嵌套路由。这样既解决了重复路由的问题,又能保证嵌套路由的布局正常渲染,两个路径也都能正常工作。

给你修改后的完整routes.tsx代码:

import { type RouteConfig, redirect, route } from "@react-router/dev/routes";

export default [
  // 根路径自动重定向到/home/welcome
  redirect("/home/welcome"),
  // Main Site 路由树
  route("home", "pages/main-site/home.tsx", [
    route("welcome", "pages/main-site/home/welcome.tsx"),
    route("events", "pages/main-site/home/events.tsx"),
    route("contact", "pages/main-site/home/contact.tsx"),
    route("about", "pages/main-site/home/about.tsx"),
  ]),
] satisfies RouteConfig;

这个配置的具体效果:

  1. 当用户访问/时,会自动重定向到/home/welcome,此时页面会先渲染home.tsx的所有布局元素,再加载welcome.tsx的内容;
  2. 直接访问/home/welcome时,也会得到完全相同的页面效果,不会有任何异常;
  3. 再也不会出现重复路由的报错,因为我们已经把原来的根index换成了重定向逻辑,和嵌套的welcome路由不存在冲突。

你直接替换掉原来的路由文件,测试一下就知道啦,完全符合你的需求~

内容来源于stack exchange

火山引擎 最新活动