javascript 我不能呈现我的网站与首页“路由器”作为默认页面

jei2mxaa  于 2023-02-28  发布在  Java
关注(0)|答案(3)|浏览(124)

我有一个网站,使用react路由器dom.路由工作正常,但我不能设置主页路由器作为主页,当我下载网站,主页是一个空的背景.我检查了家庭路由器是第一个,显然路径是正确的:“/"。有人能帮我找出问题吗?非常感谢。
App.js

import { Home } from "./components/pages/home/home.js";
import { Nav } from "./components/pages/navbar/navBar.js";
import { Reviews } from "./components/pages/review.js";
import { About } from "./components/pages/aboutUs";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import React from "react";

function App() {
  return (
    <section className="App">
      <BrowserRouter>
        <Nav />
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/aboutUs" element={<About />} />
          <Route path="/review" element={<Reviews />} />
        </Routes>
      </BrowserRouter>
    </section>
  );
}

export default App;

home.js

import React from "react";
import "./home.css";
import Carousel from "../../../components/carrousel/carousel";

export function Home() {
  const slides = [
    "https://i.ytimg.com/vi/DCOICaqQoEY/maxresdefault.jpg",
    "https://unfilteredgamer.com/wp-content/uploads/2022/03/terraforming-mars-ares-expedition-review-header.jpg",
    "https://gamecows.com/wp-content/uploads/2022/06/Ark-Nova-Board-Game-Featured.jpg",
  ];
  return (
    <div className="container">
      <div className="home">
        <div className="home-inner">
          <Carousel slides={slides} />
        </div>
        <div className="quotes">
          <img
            src="https://ih1.redbubble.net/image.1889966854.5963/poster,504x498,f8f8f8-pad,600x600,f8f8f8.jpg"
            alt="gamer-quote-1"
          ></img>
          <img
            src="https://ih1.redbubble.net/image.967398882.3526/st,small,507x507-pad,600x600,f8f8f8.jpg"
            alt="gamer-quote-2"
          ></img>
          <img
            src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ8_bOcNKvjb-NyMlFwqxOkfCPieb1CJcLImN1CsyPqtLXrk7lTn1BG_fUTso1W-SCoblo&usqp=CAU"
            alt="gamer-quote-3"
          ></img>
        </div>
      </div>
    </div>
  );
}

NavBar.js

import React, { useState } from "react";
import { Link } from "react-router-dom";
import "./navBar.css";

export const Nav = () => {
  const [showMenu, setShowMenu] = useState(false);

  const toggleMenu = () => {
    setShowMenu(!showMenu);
  };

  return (
    <nav className="nav">
      <button className="navbar-toggle" onClick={toggleMenu}>
        <i className="bi bi-menu-button-fill"></i>
        {showMenu && (
          <div className="navbar-collapse" id="navbar-collapse">
            <ul className="navbar-nav">
              <li className="nav-item">
                <Link className="nav-link" to="/">
                  Home
                </Link>
              </li>
              <li className="nav-item">
                <Link className="nav-link" to="/review">
                  Review
                </Link>
              </li>
              <li className="nav-item">
                <Link className="nav-link" to="/aboutUs">
                  About Us
                </Link>
              </li>
            </ul>
          </div>
        )}
      </button>
    </nav>
  );
};
dhxwm5r4

dhxwm5r41#

我找到了!网站没有很好地重定向,所以我包括在App.js

import { Navigate } from "react-router-dom";

我在函数App中添加了另一个重定向到“/home”的路由路径

<Route path="*" element={<Navigate to="/" />} />

而且它工作得很完美

3wabscal

3wabscal2#

如果您从托管服务/服务器上的子目录托管应用,例如"http://host-domain.com/board-game-website",则您可能会受益于在路由器上指定basename属性,以便所有路由和链接都从该路径起*相对作用。
参见Router
<Router basename>属性可用于使应用中的所有路由和链接都相对于它们共享的URL路径名的"基本"部分。当使用React Router仅呈现较大应用的一部分或当应用具有多个入口点时,此属性非常有用。基本名称不区分大小写。

function App() {
  return (
    <section className="App">
      <BrowserRouter basename="/board-game-website">
        <Nav />
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/aboutUs" element={<About />} />
          <Route path="/review" element={<Reviews />} />
          <Route path="*" element={<Navigate to="/" replace />} />
        </Routes>
      </BrowserRouter>
    </section>
  );
}

请注意,当应用从部署主机/服务器运行时,此问题会得到解决,但现在本地运行时,会出现奇怪的行为。
1.更新package.json文件中的homepage条目以包含基本名称

...
"homepage": "./board-game-website",
...

1.如果这不会自动发生,请确保在本地导航到basename。
"http://localhost:3000/board-game-website"
你可能还想保留"包罗万象"的路线,以便将用户跳转到应用程序的主页,搜索应用程序没有明确处理的任何其他路线。

ldioqlga

ldioqlga3#

你检查/aboutUs/review路由了吗?如果它们没问题,检查你的home.js组件,也许问题就在那里。

相关问题