
React Router v6 中嵌套路由无法渲染,通常是因为父级布局组件未正确使用 占位符——它才是子路由 element 内容得以插入并显示的关键。
react router v6 中嵌套路由无法渲染,通常是因为父级布局组件未正确使用 `
在 React Router v6 中,嵌套路由(nested routes)的设计理念发生了根本性转变:父路由不再自动“包裹”或“包含”子路由内容,而是必须显式声明一个渲染出口。这个出口就是 <outlet></outlet> 组件——它是子路由内容的唯一挂载点。若缺失 <outlet></outlet>,即使 URL 正确变更、路由匹配成功,子组件也因无处可渲而“不可见”,页面视觉上始终停留在父组件。
以你提供的地理应用为例:
// ✅ 正确的根路由配置(v6)
<browserrouter><routes><route path="/" element="{<World"></route>}>
<route path="europe" element="{<Europe"></route>}>
<route path="britian" element="{<Britian"></route>} />
</routes></browserrouter>
该结构定义了一个三层嵌套关系:
-
/→ 渲染<world></world>(布局组件) -
/europe→ 在<world></world>内部渲染<europe></europe>(子布局) -
/europe/britian→ 在<europe></europe>内部渲染<britian></britian>(终级页面)
但要使这种嵌套生效,每一层布局组件都必须主动调用 <outlet></outlet>,否则子内容将被丢弃:
Orderly React SDK 钩子使用参考指南,包括 useOrderEntry、usePositionStream、useOrderbookStream、useCollateral 等。
// ✅ World.js:必须渲染 Outlet,否则 Europe 不会显示
import { Outlet, Link } from "react-router-dom";
export default function World() {
return (
<div>
<nav><link to="europe">Europe
</nav><main><outlet></outlet> {/* ← 关键!子路由(Europe)将在此处渲染 */}
</main>
</div>
);
}
// ✅ Europe.js:同理,需为 Britian 提供渲染位置
import { Outlet, Link } from "react-router-dom";
export default function Europe() {
return (
<div>
<nav><link to="britian">Britian
</nav><main><outlet></outlet> {/* ← 关键!Britian 将在此处渲染 */}
</main>
</div>
);
}
// Britian.js(终级页面,无需 Outlet)
export default function Britian() {
return <h2>Welcome to Britian!</h2>;
}
? 为什么原代码不工作?
你最初的 World 和 Europe 组件仅返回 <link>,没有 <outlet></outlet>。当用户点击 “Europe” 时,Router 确实匹配了 /europe 并准备渲染 <europe></europe>,但它试图将 <europe></europe> 插入 World 组件中——而 World 的 JSX 里没有任何接收点,因此 <europe></europe> 被静默忽略,界面保持不变。
✅ 补充最佳实践:
- 使用语义化布局结构(如
<header></header>/<nav></nav>/<main></main>),让<outlet></outlet>位于内容区域; - 避免在布局组件中直接写死子内容,所有动态部分应交由
<outlet></outlet>承载; - 若某路由无需嵌套子路由,应定义为独立路由(平级
Route),而非嵌套结构; - 开发时可配合 React DevTools 检查实际渲染树,确认
<outlet></outlet>是否被正确挂载。
? 小贴士:<outlet></outlet> 的行为类似于 Vue 的 <router-view></router-view> 或旧版 React Router v5 的 {this.props.children},但它更安全、更可控,且天然支持加载状态、错误边界等高级特性。
掌握 <outlet></outlet>,是驾驭 React Router v6 嵌套路由、构建可维护多层导航应用的第一把钥匙。










