【发布时间】:2022-01-17 04:44:50
【问题描述】:
我正在尝试完成本教程Securing Gatsby With Auth0,但由于到达/路由器与 React 17 不兼容而遇到了障碍。经过一番谷歌搜索后,我发现了这个问题Which router project to use moving forward,它有一个迁移指南:Migrate to React Router from Reach
但是,作为初学者,我还不够精通,无法理解其中包含的内容。
教程源代码如下:
import React from "react"
import { Router } from "@reach/router"
import { Link } from "gatsby"
const Home = () => <p>Home</p>
const Settings = () => <p>Settings</p>
const Billing = () => <p>Billing</p>
const Account = () => (
<>
<nav>
<Link to="/account">Home</Link>{" "}
<Link to="/account/settings">Settings</Link>{" "}
<Link to="/account/billing">Billing</Link>{" "}
</nav>
<Router>
<Home path="/account" />
<Settings path="/account/settings" />
<Billing path="/account/billing" />
</Router>
</>
)
export default Account
从migration guide更新路由器到路由,我把这个改成了:
import React from "react"
import { Link } from "gatsby"
import { Routes } from "react-router-dom";
const Home = () => <p>Home</p>
const Settings = () => <p>Settings</p>
const Billing = () => <p>Billing</p>
const Account = () => (
<>
<nav>
<Link to="/account">Home</Link>{" "}
<Link to="/account/settings">Settings</Link>{" "}
<Link to="/account/billing">Billing</Link>{" "}
</nav>
<Routes>
<Home path="/account" />
<Settings path="/account/settings" />
<Billing path="/account/billing" />
</Routes>
</>
)
export default Account
所以本质上,将Router替换为Routes。现在编译成功,但在运行时失败并出现以下错误:
[Home] 不是
<Route>组件。<Routes>的所有子组件 必须是<Route>或<React.Fragment>
因此首页、设置和计费不被视为<Route\> 或<React.Fragment\>
这是一个简单的例子,适合精通 react-router 的人。我只是在学习这些东西,所以遇到了一些困难。我已要求 auth0 更新本教程,但不知道何时会采取行动,如果有的话。
【问题讨论】:
标签: reactjs react-router gatsby react-router-dom auth0