javascript - 我想对路由器做出反应以呈现新页面
问题描述
我让这段代码按预期工作(有点)
**App.js**
import React from "react";
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
import "./App.css";
import MyForm from "./Recpayfrm";
function App() {
return (
// Code taken from https://reactrouter.com/web/guides/quick-start
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/Recpayfrm">MyForm</Link>
</li>
<li>
<Link to="/users">Users</Link>
</li>
</ul>
</nav>
{/* A <Switch> looks through its children <Route>s and
renders the first one that matches the current URL. */}
<Switch>
<Route path="/Recpayfrm">
<MyForm />
</Route>
<Route path="/users">
<Users />
</Route>
<Route path="/">
<Home />
</Route>
</Switch>
</div>
</Router>
);
}
function Home() {
return <h2>Home</h2>;
}
function Users() {
return <h2>Users</h2>;
}
export default App;
但是当点击链接 MyForm 时,结果显示在底部(即 HOME 区域)。我想要一个新的页面来呈现/显示。请参阅图片中的输入字段。
解决方案
例如,您可以封装所有需要在“主页区域”(具有导航栏列表)中的路由HomeComponent
。
而那些在外面需要一个“新鲜页面”的人,就像这样:
// Every route here will also contain the navbar
function HomeComponent() {
return (
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/Recpayfrm">MyForm</Link>
</li>
<li>
<Link to="/users">Users</Link>
</li>
</ul>
</nav>
<Switch>
<Route path="/users">
<Users/>
</Route>
<Route path="/">
<Home/>
</Route>
</Switch>
</div>
)
}
现在在您的App
组件中,您将添加所有需要在自己的页面中呈现的路由:
function App() {
return (
<Router>
<Switch>
<Route path="/Recpayfrm">
<MyForm/>
</Route>
<Route path="/">
<HomeComponent/>
</Route>
</Switch>
</Router>
)
}
这是在行动
推荐阅读
- traefik - 适用于 Intranet 和 Internet 的 Traefik
- api - Symfony 和 Api 解锁路线
- android - 如何杀死当前的应用程序并打开 Playstore?
- tensorflow - 如何使用 Keras Tensorflow 在张量中删除最后一行和最后一列
- key-bindings - 超级终端:如何让 Ctrl R 用于反向历史搜索(和其他 Ctrl 键绑定)
- docker - Rancher 启动失败
- selenium - 运行 JavascriptExecutor 时出现空指针异常
- java - JavaMail 无法从 docker 容器发送电子邮件
- laravel - 基于列值的雄辩排序
- python - 向同一主机发送多个 HTTP GET 请求会导致 aiohttp 客户端卡住