【问题标题】:react router not working on some pages on live site反应路由器在实时站点上的某些页面上不起作用
【发布时间】:2021-11-29 03:51:46
【问题描述】:

my live sitemy code

我的所有链接在npm start 上都可以,但是当我运行npm run build 时,某些页面的路由停止工作。 /about 根本不起作用,如果您在 404 页面上并向后导航,/projects 页面也会停止工作。

【问题讨论】:

  • 你在/about路线上得到了什么?
  • 您是否尝试使用Link 而不是nav.js 文件中的标签?使用多条路由时的最佳实践是使用Switch 并将所有路由包含在其中,并在所有Route 标签中使用exact 关键字。让我知道这是否适合您。
  • @RoshanKanwar 添加链接后,文件再次工作。我之前尝试过添加开关,但它会导致网站崩溃。感谢您的帮助!

标签: reactjs npm npm-start


【解决方案1】:

您应该使用BrowserRouter 将所有Routes 包装在您的Nav 组件中,并使用Link 来呈现About 组件,如下所示。

欲了解更多信息:https://reactrouter.com/web/guides/quick-start

import "./nav.css";
import {
  BrowserRouter as Router,
  Route,
  Link,
  Redirect,
} from "react-router-dom";
import LogoS from "../imgs/logo-sm.png";
import Logo1 from "../imgs/logo-01.png";
import Projects from "./project-list";
import Aub from "./projects/auburn";
import M3d from "./projects/m3d";
import Uroute from "./projects/uroute";
import Thesis from "./projects/thesis";
import About from "./about";
import ACNH from "./projects/acnh";

const Nav = () => {
  return (
    <Router>
      <div>
        <header className="navbar">
          <div className="container">
            <Link to="/projects">
              <p className="mb-0 navbar-brand">
                <img
                  alt="Trisha Dring"
                  className="image logo d-sm-none"
                  src={LogoS}
                />
                <img
                  className="image logo d-none d-sm-block"
                  alt="Trisha Dring"
                  src={Logo1}
                />
              </p>
            </Link>
            <ul className="nav">
              <li className="nav-item">
                <Link
                  to="/about"
                  className="nav-link active"
                  aria-current="page"
                >
                  About
                </Link>
              </li>
              <li className="nav-item">
                <a className="nav-link" href="/">
                  Resume
                </a>
              </li>
              <li className="nav-item">
                <a
                  className="nav-link"
                  href="mailto:trisha.dring+website@gmail.com"
                >
                  Contact
                </a>
              </li>
            </ul>
          </div>
        </header>
        <Route path="/projects" component={Projects} />
        <Route path="/ACNH" component={ACNH} />
        <Route path="/Auburn" component={Aub} />
        <Route path="/about" component={About} />
        <Route path="/M3D" component={M3d} />
        <Route path="/Uroute" component={Uroute} />
        <Route path="/FixHFA" component={Thesis} />
        <Route exact path="/">
          <Redirect to="/projects" />
        </Route>
      </div>
    </Router>
  );
};

export default Nav;

顺便说一句,在您的About 组件中,使用className 而不是class,如下所示。否则,它会给出警告。

<p className="explain">Hi. I'm Trisha</p>

【讨论】:

  • 你忘记添加switch标签
  • 我在 index.js 页面上有BrowserRouter as Router,以及带有router 的应用程序。是否需要再次包含它?
猜你喜欢
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 2012-04-13
  • 2018-04-13
  • 1970-01-01
相关资源
最近更新 更多