React 路由器在客户端不工作。我如何解决它?

React router is not working client-side. How do i fix it?

我正在使用 React Browser Router,作为带有 create-react-app 的 npm 模块 (react-router-dom)。路由在本地工作正常,但在部署后就不行了。 当按 link 时,我没有被带到所需的位置(例如 /start)。找不到页面。

我查看了 提示,但仍然无效。

我没有使用 Heroku,也不知道是否应该使用。

这是我的反应中的一些代码片段 App.js:

import { BrowserRouter, Route, Switch } from "react-router-dom";

import Home from "./Components/Home.jsx";
import Billigast from "./Components/Billigast";
import NoMatch from "./Components/NoMatch";
import Start from "./Components/Start";

class App extends Component {
  render() {
    return (
      <BrowserRouter>
        <div>
          <NavBar />
          <Switch>
            <Route path="/" component={Home} exact />
            <Route path="/start" component={Start} />
            <Route component={NoMatch} />
          </Switch>
        </div>
      </BrowserRouter>
    );
  }
}

static.json:

{
  "root": "/",
  "clean_urls": false,
  "routes": {
    "/**": "index.html"
  }
}

我尝试了几个 "root": 地点。我的 index.html 文件 根目录中。

这是 linked 页面之一:

import React from "react";
import NavBar from "./NavBar";
import Form from "./Form";

const Start = () => {
  return (
    <div>
      <Form />
    </div>
  );
};

export default Start;

感谢您的帮助!

没有 正确导入 react-router-dom NavLink。我正在导入 NavLink,但来自 reactstrap。

修复(在NavBar组件中):

import { NavLink as RouterNavLink } from "react-router-dom";

因为 reactstrap 和 react-router-dom 使用相同的名称 (NavLink) 并且由于设计原因我想同时使用两者。

然后我将 RouterNavLink 包裹在 NavLink 中,如下所示:

<NavLink>
  <RouterNavLink to="/start">Start</RouterNavLink>
</NavLink>

它不起作用并不奇怪,因为我什至没有正确导入。

此外,我不需要 static.json 文件。