如何导航到一个组件并将其作为整个页面打开

How can I navigate to one component and open it as a whole page

当我点击“博客”时,我只想在整个页面上打开博客部分,而不是在主页上将额外的博客组件与其他组件一起打开。当我现在点击博客时,它会在同一页面上的团队组件之后打开。我怎样才能改变它并打开整个页面?

import React from 'react';
import './App.css';
import { BrowserRouter, Route} from "react-router-dom";
import Header from './components/Header';
import Home from './components/Home';
import About from './components/About';
import Team from './components/Team';
import Blog from './components/Blog';
import Contact from './components/Contact';
import ScrollToTop from './components/ScrollToTop';

const App = () => {
  return (
      <BrowserRouter>
      <Header />
      <Home />
      <About />
      <Team />
      <Route path="/blog" component={Blog}></Route>
      <Contact />
      <ScrollToTop />
      </BrowserRouter>
  );
}

export default App;

这是我的另一个组件:

import React from 'react';
import { Link as Link1} from 'react-scroll';
import { Link as Link2 } from 'react-router-dom';
import styled from 'styled-components';

const LeftNav = ({ open }) => {
    return (
        <NavMenu open={open}>
        <ul>
            <li>
                <Link1
                smooth={true}
                spy={true}
                offset={0}
                duration={1000}
                to="home"
                >Home</Link1>
            </li>
            <li>
                <Link1
                activeClass="active"
                smooth={true}
                spy={true}
                offset={0}
                duration={1200}
                to="about"
                >About</Link1>
            </li>
            <li>
                <Link1
                activeClass="active"
                smooth={true}
                spy={true}
                offset={0}
                duration={1200}
                to="team"
                >Team</Link1>
            </li>
            <li>
                <Link2 id="blog"
                to="/blog"
                target="_blank"
                >Blog</Link2>
            </li>
            <li>
                <Link1
                activeClass="active"
                smooth={true}
                spy={true}
                offset={0}
                duration={1200}
                to="contact"
                >Contact</Link1>
            </li>
        </ul>
    </NavMenu>
    )
}

export default LeftNav
````

您总是渲染页眉、主页、关于等,因为它们不在 <BrowserRouter/> 下的 <Route/> 组件内。正如你的 Blog 组件只有在你在 /blog 路线上时才会被渲染,但你的其余组件总是被显示,因为没有 <Route/> 包裹它们。你应该把你的主页放在一个路径下,你的博客页面放在另一个路径下,例如:

const App = () => {
  return (
      <BrowserRouter>
        <Route path="/home"> {/* <-- insert the right path for your main page here*/}
          <Header />
          <Home />
          <About />
          <Team />
          <Contact />
          <ScrollToTop />
        </Route>
        <Route path="/blog" component={Blog}></Route>
      </BrowserRouter>
  );
}

在上面的示例中,您应该仅在转到 {base_url}/home 时看到主页,因此如果您需要不同的内容,则必须根据您的需要进行配置。查看有关其路径属性的 Route 文档以正确设置它。