#javascript #reactjs #url #react-router
Вопрос:
Я использую react-router-dom 5.2.0 и React 17.0.1
URL-адрес моего приложения состоит из домена и базового пути, которые должны быть исправлены и оставаться неизменными. При использовании react-router-dom в моем приложении базовый путь изменяется, и путь полностью меняется. Маршрутизация работает нормально, но URL-адрес на панели навигации уничтожается маршрутизацией.
Мой базовый URL https://uat.highnoon.com/master/app/testplanweb
-адрес, и если я нажму lt;Link to="/about"gt;
на него, я получу https://uat.silose.com/about
Мне нужно, чтобы путь оставался неизменным с помощью React Router DOM, и в приведенном выше случае так и должно быть https://uat.highnoon.com/master/app/testplanweb/about
. URL-адрес настроен в моем конвейере gitlab, и мне нужно, чтобы домен и базовый путь оставались неизменными во время навигации.
index.js
import React from "react"; import ReactDOM from "react-dom"; import { BrowserRouter } from "react-router-dom"; import App from "./App"; import reportWebVitals from './reportWebVitals'; ReactDOM.render( lt;BrowserRoutergt; lt;App /gt; lt;/BrowserRoutergt;, document.getElementById("root") ); reportWebVitals();
App.js
import React from "react"; import { useLocation, Switch, Route, Redirect } from "react-router-dom"; import "./App.css"; import Version from './components/Version'; import List from "./components/List"; import { Home } from "./components/Home" import Nav from "./components/Nav"; function App() { const { pathname } = useLocation(); return ( lt;div className="App"gt; lt;Nav/gt; lt;Switchgt; lt;Redirect from="/:url*(/ )" to={pathname.slice(0, -1)} /gt; lt;Route exact path="/" component={Home} /gt; lt;Route exact path="/search" component={List} /gt; lt;Route exact path="/about" component={Version} /gt; lt;/Switchgt; lt;/divgt; ); } export default App;
Nav.js
import React from 'react'; import './../App.css'; import { Link } from 'react-router-dom'; import "bootstrap/dist/css/bootstrap.min.css"; function Nav() { return ( lt;nav class="nav nav-tabs justify-content-left p-3 mb-2 bg-dark text-white"gt; lt;Link to="/"gt; lt;a class="nav-link text-white bg-dark"gt; Home lt;/agt; lt;/Linkgt; lt;Link to="/search"gt; lt;a class="nav-link text-white bg-dark"gt; Search lt;/agt; lt;/Linkgt; lt;Link to="/about"gt; lt;a class="nav-link text-white bg-dark"gt; About lt;/agt; lt;/Linkgt; lt;/navgt; ); } export default Nav;
Ответ №1:
Попробуйте использовать lt;BrowserRouter basename="/master/app/testplanweb"gt;
Комментарии:
1. Спасибо! На данный момент это решает мою проблему. Проблема, с которой я столкнусь в будущем, заключается в том, что «мастер» — это название ветви, которое будет отличаться для каждой ветви функций.