reactjs - 无法在特定路由中呈现正确的组件
问题描述
我想在路由“ /login ”中呈现LoginForm组件。但是,当我单击标题中的LOG IN链接时,URL 端点不会更改,并且Products组件会被呈现。 我究竟做错了什么?
代码片段如下: App.js
import React from "react";
import { Container } from "react-bootstrap";
import Header from "./components/Header";
import Footer from "./components/Footer";
import Products from "./components/Products";
import { Route, Switch } from "react-router-dom";
import SingleProductView from "./components/SingleProductView";
import Cart from "./components/Cart";
import LoginForm from "./components/LoginForm";
const App = () => {
return (
<>
<Header />
<main className="py-3">
<Container>
<Switch>
<Route path="/login" component={LoginForm} />
<Route path="/product/:id" component={SingleProductView} />
<Route path="/cart/:id?" component={Cart} />
<Route path="/" component={Products} exact />
</Switch>
</Container>
</main>
<Footer />
</>
);
};
export default App;
页眉.js
import React from "react";
import { LinkContainer } from "react-router-bootstrap";
import { Navbar, Nav, Container } from "react-bootstrap";
const Header = () => {
return (
<header>
<Navbar bg="dark" variant="dark" expand="lg" collapseOnSelect>
<Container>
<LinkContainer to="/">
<Navbar.Brand>ProShop</Navbar.Brand>
</LinkContainer>
<Navbar.Toggle aria-controls="basic-navbar-nav" />
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="ml-auto">
<LinkContainer to="/cart">
<Nav.Link>
<i className="fas fa-shopping-cart"></i>cart
</Nav.Link>
</LinkContainer>
<LinkContainer to="/login">
<Nav.Link>
<i className="fa fa-user"></i>Log In
</Nav.Link>
</LinkContainer>
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
</header>
);
};
export default Header;
解决方案
您必须BrowserRouter
从组件导入react-router-dom
并包装所有路由BrowserRouter
。
推荐阅读
- azure - 如何将 azure api 管理集成到节点 socket.io 应用程序
- list - 删除重复的小部件
- java - 如何修复接收对象数组的静态泛型方法
- c - 如何在 Jenkins 中生成代码覆盖率报告。为了获得代码覆盖率,必须做哪些额外的插件/配置
- javascript - 使用带有动态/用户相关秘密的“nestjs/jwt”签名
- embedded - 如何通过 esp32 中的原生 api 进行 OTA 更新?
- python - keras 中 layer.weights 和 layer.get_weights 的区别
- java - 如何在 XML 中传递 @RequestBody 对象列表
- python-3.x - “RequirementParseError:预期 ',' 或 gitpython 中的列表结尾 >=2.1.9<2.2 at <2.2”
- ffmpeg - FFmpeg - avcodec_receive_frame 返回 AVERROR(EAGAIN)