使用相对路径部署反应路由器

pat*_*man 6 reactjs react-router

我的问题是关于react-router-dom结合部署到相对路径(参见https://create-react-app.dev/docs/deployment#building-for-relative-paths)。在我的开发环境中,路由器工作正常,但是一旦我使用路由器中homepage设置的标签构建和部署我的应用程序package.json似乎不再工作。

首先,我会假设它会起作用。毕竟,这是一个构建选项,通过 react 为特定 url 构建构建,我会假设该相对路径具有相同的功能。然而,无论是<Link to="">部件还是部件都不<Switch>尊重我的反应应用程序的相对路径。

其次,我还没有找到规避这种行为的解决方案。有任何想法吗?

处理反应路由器和相对路径的其他问题集中在一个完全不同的主题上。所以我还没有找到我的问题的答案。这个部署在不同位置(子目录)的 React-router 应用程序可能会越来越近,可能是一种解决方法。

信息:

"react-dom": "^16.8.6",
"react-router-dom": "^5.0.1",
Run Code Online (Sandbox Code Playgroud)

编辑和 PS:

我可能只需要设置一个基本名称。如果 basename 正在更改,我至少希望从 中的设置推断它,package.json而不是根据某些package.json设置更改我的代码。

编辑2:

我可以basename={process.env.PUBLIC_URL}用来将基本名称设置为正确的 URL。然而,路线仍然不匹配。然而,这些链接看起来很好,因此<Link to="/xx">实际上会产生一个{process.env.PUBLIC_URL}/xx符合预期行为的链接,但路由器<Switch>与它们不匹配。 其实这就是答案,你可以从头开始。

使用basename={process.env.PUBLIC_URL}确实解决了我的问题。

pat*_*man 5

对于遇到同一问题的任何人:阅读我原始问题中的编辑。使用basename={process.env.PUBLIC_URL}确实解决了我的问题。