在React Router v7 CHANGELOG和文档中进行了一些挖掘,但从RR6到RR7的迁移路径是相对路径(
v7_relativeSplatPath
特征标志)相对简单。
https://reactrouter.com/upgrading/v6#v7_relativesplatpath
-
拆分
<Route>
分成两部分
分割任何多段飞溅
<路线>
进入父路线
路径和儿童路线与飞溅
老的
{
path: 'workspace/:spaceId/*',
element: (
<div>
<Link to="setting">To space setting</Link>
<Routes>
<Route path="setting" />
</Routes>
</div>
),
},
当前:
{
path: "workspace/:spaceId",
children: [
{
path: "*",
element: (
<div>
<Link to="setting">To space setting</Link>
<Routes>
<Route path="setting" element={<h1>Setting</h1>} />
</Routes>
</div>
),
},
],
},
-
更新相关链接
更新任何
<Link>
该路线树中的元素,以包括额外的
..
继续链接到同一位置的相对分段
老的
<Link to="setting">To space setting</Link>
当前:
<Link to="../setting">To space setting</Link>
最后一个关键是让后代路由元素也精确地呈现在
"/homepage/workspace/:spaceId"
为此,请制作
"workspace/:spaceId"
路线也是一条索引路线。
最终代码:
const router = createHashRouter([
{
path: "homepage",
element: (
<div>
<Link to="workspace/1">To workspace 1</Link>
<br />
<Link to="foo">To foo</Link>
<main>
<Outlet />
</main>
</div>
),
children: [
{
path: "workspace/:spaceId",
children: [
{
index: true,
path: "*",
element: (
<div>
<Link to="../setting">To space setting</Link>
<Routes>
<Route path="setting" element={<h1>Setting</h1>} />
</Routes>
</div>
),
},
],
},
{
path: "foo",
element: <div>foo</div>,
},
],
},
]);