React Router v6 共享布局
React Router v6 shared layouts
阅读后 Route layouts 我想用布局包裹我的路线的一些元素,但让其他元素没有布局。
示例如下:
App.jsx
import React from 'react';
import { Routes, BrowserRouter, Route } from 'react-router-dom';
export default function App() {
return (
<div>
<BrowserRouter>
<Routes>
<Route path="/" element={<p>Home</p>} />
<Route element={<div style={{ background: 'red' }} />}>
<Route path="/login" element={<p>Login</p>} />
</Route>
</Routes>
</BrowserRouter>
</div>
);
当我转到 /
时,我可以看到文本“主页”,它没有布局。
但是当我转到 /login
时没有任何渲染,它应该渲染包裹文本“登录”的红色背景布局。
这是一个实时代码沙箱:
https://stackblitz.com/edit/github-hwpla5?devtoolsheight=33&file=src/App.jsx
我做错了什么?
谢谢
您必须在布局元素内呈现 <Outlet />
for 以指定活动子路由应安装的位置。
<Routes>
<Route path="/" element={<p>Home</p>} />
<Route element={<div style={{ background: 'red' }} > <Outlet /> </div>}>
<Route path="/login" element={<p>Login</p>} />
</Route>
</Routes>
阅读后 Route layouts 我想用布局包裹我的路线的一些元素,但让其他元素没有布局。
示例如下:
App.jsx
import React from 'react';
import { Routes, BrowserRouter, Route } from 'react-router-dom';
export default function App() {
return (
<div>
<BrowserRouter>
<Routes>
<Route path="/" element={<p>Home</p>} />
<Route element={<div style={{ background: 'red' }} />}>
<Route path="/login" element={<p>Login</p>} />
</Route>
</Routes>
</BrowserRouter>
</div>
);
当我转到 /
时,我可以看到文本“主页”,它没有布局。
但是当我转到 /login
时没有任何渲染,它应该渲染包裹文本“登录”的红色背景布局。
这是一个实时代码沙箱: https://stackblitz.com/edit/github-hwpla5?devtoolsheight=33&file=src/App.jsx
我做错了什么?
谢谢
您必须在布局元素内呈现 <Outlet />
for 以指定活动子路由应安装的位置。
<Routes>
<Route path="/" element={<p>Home</p>} />
<Route element={<div style={{ background: 'red' }} > <Outlet /> </div>}>
<Route path="/login" element={<p>Login</p>} />
</Route>
</Routes>