首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在特定路由中呈现正确的组件。

无法在特定路由中呈现正确的组件。
EN

Stack Overflow用户
提问于 2021-03-06 14:12:37
回答 2查看 35关注 0票数 1

我想在路由“LoginForm”中呈现/login组件。但是,当我单击标题中的日志链接时,URL端点不会改变,Products组件将被呈现。

我做错了什么?

代码片段如下所示: App.js

代码语言:javascript
运行
复制
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;

Header.js

代码语言:javascript
运行
复制
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;
EN

回答 2

Stack Overflow用户

发布于 2021-03-06 14:16:23

您必须从BrowserRouter中导入react-router-dom,并使用BrowserRouter组件包装所有路由。

票数 0
EN

Stack Overflow用户

发布于 2021-03-06 16:26:49

只需在App.js import {BrowserRouter, Route, Switch } from "react-router-dom";中更新此导入语句

并在App.js中更新这段代码

代码语言:javascript
运行
复制
<BrowserRouter>

 <Switch>
       <Route path="/login" component={LoginForm} />
        <Route path="/product/:id" component=. {SingleProductView} />
        <Route path="/cart/:id?" component={Cart} />
        <Route path="/" component={Products} exact />
</Switch>

</BrowserRouter>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66506595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档