【发布时间】:2020-09-02 09:40:49
【问题描述】:
我在设置尊重当前 URL 的路由器时遇到问题。所以该网站不是一个完整的 react 构建,但它在特定路线上初始化 react 应用程序 (http://thesite.com/tv/videos/playlists)。现在,当我使用 react-router 时,它会将 URL 更改为 https://thesite.com/{reactRoute}。
所以我用window.location.pathname
import * as React from 'react';
import {
BrowserRouter as Router,
Switch,
Route,
Link,
} from 'react-router-dom';
import { createBrowserHistory } from 'history';
import HomeContainer from './containers/HomeContainer';
import PlayListContainer from './containers/PlayListContainer';
const baseUrl = window.location.pathname;
console.log(baseUrl);
const App: React.FC =
() => {
const history = createBrowserHistory({ basename: baseUrl });
return (
<Router history={history}>
<div>
<nav>
<ul>
<li>
<Link to={{pathname: '/'}}>Home</Link>
</li>
<li>
<Link to={`${baseUrl}/playlists`}>Playlist</Link>
</li>
</ul>
</nav>
<Switch>
<Route path="/">
<HomeContainer />
</Route>
<Route path={`${baseUrl}/playlists`}>
<PlayListContainer />
</Route>
</Switch>
</div>
</Router>
);
}
export default App;
现在的问题是它维护基本 URL 并相应地预先设置 react 路由,但转到基本路由以外的任何内容都不起作用,因此单击播放列表链接不会启动播放列表路由。
非常感谢任何帮助。
【问题讨论】:
-
为什么不创建一个 const 文件并将其包含到组件中并在该文件中定义 base_url?
-
感谢您的回复。你所说的不会有什么问题仍然存在。
标签: javascript reactjs react-redux react-router