我在反应路由器相对路径方面遇到困难。基本路径从位置栏中消失
I am having difficulties with react router relative paths. The base path disappears from the Location bar
我部署了一个 Web 应用程序,根目录位于 /exist/apps/my-app/
的路径中。我为 App.js:
实现了以下代码
import React from 'react';
import Navbar from 'react-bootstrap/Navbar';
import Nav from 'react-bootstrap/Nav';
import {
BrowserRouter as Router,
Switch,
Route,
Link
} from "react-router-dom";
import 'bootstrap/dist/css/bootstrap.min.css';
import './App.css';
function App() {
return (
<Router basename={process.env.PUBLIC_URL}>
<Navbar bg="dark" variant="dark" fixed="top">
<Navbar.Brand href="/"><img alt="" src="https://avatars3.githubusercontent.com/u/2393489?s=200&v=4" weign="40" height="40"/> My React Application</Navbar.Brand>
<Nav className="mr-auto">
<Link to="/" className="nav-link">Home</Link>
<Link to="/features" className="nav-link">Features</Link>
<Link to="/pricing" className="nav-link">Pricing</Link>
</Nav>
</Navbar>
<div className="full">
<Switch>
<Route path="/features">
<h1>Features</h1>
</Route>
<Route path="/pricing">
<h1>Pricing</h1>
</Route>
<Route path="/">
<h1>Home</h1>
</Route>
</Switch>
</div>
</Router>
);
}
export default App;
单击导航链接可导航到正确的路线,但 /exist/apps/my-app
从显示的 URL 中消失。如何保留位置栏中 URL 的缺失部分?
process.env.PUBLIC_URL
只包含句点。
我找到了两个解决方案。
首先是硬编码 basename={'/exist/apps/my-app'}
。
第二种更好的方法是一起消除 basename
并将 BrowserRouter
更改为 HashRouter
。
我最终找到了第二种方法,并且获得了能够为包含路由的 URL 添加书签的额外好处。
检查 https://github.com/lcahlander/my-app 示例 eXist-db Web 应用程序。
我部署了一个 Web 应用程序,根目录位于 /exist/apps/my-app/
的路径中。我为 App.js:
import React from 'react';
import Navbar from 'react-bootstrap/Navbar';
import Nav from 'react-bootstrap/Nav';
import {
BrowserRouter as Router,
Switch,
Route,
Link
} from "react-router-dom";
import 'bootstrap/dist/css/bootstrap.min.css';
import './App.css';
function App() {
return (
<Router basename={process.env.PUBLIC_URL}>
<Navbar bg="dark" variant="dark" fixed="top">
<Navbar.Brand href="/"><img alt="" src="https://avatars3.githubusercontent.com/u/2393489?s=200&v=4" weign="40" height="40"/> My React Application</Navbar.Brand>
<Nav className="mr-auto">
<Link to="/" className="nav-link">Home</Link>
<Link to="/features" className="nav-link">Features</Link>
<Link to="/pricing" className="nav-link">Pricing</Link>
</Nav>
</Navbar>
<div className="full">
<Switch>
<Route path="/features">
<h1>Features</h1>
</Route>
<Route path="/pricing">
<h1>Pricing</h1>
</Route>
<Route path="/">
<h1>Home</h1>
</Route>
</Switch>
</div>
</Router>
);
}
export default App;
单击导航链接可导航到正确的路线,但 /exist/apps/my-app
从显示的 URL 中消失。如何保留位置栏中 URL 的缺失部分?
process.env.PUBLIC_URL
只包含句点。
我找到了两个解决方案。
首先是硬编码 basename={'/exist/apps/my-app'}
。
第二种更好的方法是一起消除 basename
并将 BrowserRouter
更改为 HashRouter
。
我最终找到了第二种方法,并且获得了能够为包含路由的 URL 添加书签的额外好处。
检查 https://github.com/lcahlander/my-app 示例 eXist-db Web 应用程序。