我用React Router 6.8构建了一个React应用程序,我的应用程序结构如下:
const router = createBrowserRouter(
createRoutesFromElements(
<Route path="/" element={<RootLayout />} errorElement={<Error />}>
<Route path="motive">
<Route
path=":motiveSlug"
element={
<MotiveSingle />
}>
<Route path="artist">
<Route
path=":artistSlug"
element={
<ArtistSingle />
}
/>
</Route>
</Route>
</Route>
</Route>
)
);
这是我想如何呈现中元素的出口:
<div id="configurator">
{/* Outlet MotiveSingle */}
</div>
<div id="content">
{/* Outlet ArtistSingle */}
</div>
我想在#configurator
中渲染MotiveSingle
。动机细节包含艺术家。单击艺术家链接后,我想在#content
中渲染ArtistSingle
。
我如何才能实现MotiveSingle
在#configurator
中渲染,ArtistSingle
在#content
中渲染?
以下是您可以观看的现场演示:https://codesandbox.io/s/multiple-outlets-in-nested-routes-ckumkk
以下是布局图,以便更好地理解:
1条答案
按热度按时间jv4diomz1#
您可以稍微简化路由,只需添加一个Motive布局路由就可以实现我认为您所描述的内容。主要问题是每个
Route
组件只有一个嵌套路由的children
prop/集,因此它们只能被渲染成单个Outlet
分量。这是修复我只是渲染MotiveSingle
直接在布局路线,而不是额外的Outlet
。示例: