【发布时间】:2020-05-30 14:27:53
【问题描述】:
当我使用导航栏和按钮在页面之间导航时,浏览器上的 URL 会正常更改。但是一旦我尝试手动修改 URL,它就不起作用了!
示例 1
- 第 1 步:我打开 localhost:3000
- 第 2 步:我点击 Athletes 转到 localhost:3000/Athletes
- 第 3 步:我选择一名运动员前往 localhost:3000/Athletes/2/AthleteSessions/
- 第 4 步:我手动将 URL 更改为 localhost:3000/Athletes 然后我选择了一个运动员,我被重定向到 localhost: 3000/Athletes/2/AthleteSessions/ 到目前为止还不错,但是当我修改 URL 以将 localhost:3000/Athletes/ 与 一个斜线,然后我选择一个不起作用的运动员,我被重定向到 localhost:3000/Athletes/Athletes/2/AthleteSessions/
示例 2
- 步骤 1、2 和 3 与第一个示例相同。
- 第 4 步:我选择一个 AthleteSession 去 localhost:3000/Athletes/2/AthleteSessions/1/TrainingSession/ 它工作正常,但是当我尝试通过手动修改 URL localhost:3000/Athletes/2/AthleteSessions 返回上一页,然后我再次选择 AthleteSession,它不起作用,我被重定向到localhost:3000/Athletes/2/1/TrainingSession/
App.js
import { Route, Switch, Redirect } from "react-router-dom";
<Route path="/Athletes" exact component={Athletes} />
<Route path="/Athletes/:id/AthleteSessions" exact component={AthleteSessions} />
<Route path="/Athletes/:athleteId/AthleteSessions/:athleteSessionId/TrainingSession"
exact component={AthleteTrainingSession} />
Index.js
import { BrowserRouter as Router } from "react-router-dom";
render( <Router> <App /> </Router>, document.getElementById("root") );
Athletes.js
onClick={() => {
this.props.history.push({
pathname:
"Athletes/" + ath.AthleteId + "/AthleteSessions/",
});
}}
AthleteSessions.js
passedAthleteId = this.props.match.params.id;
onClick={() => {
this.props.history.push({
pathname:
athSess.AthleteSessionId + "/TrainingSession/",
});
}}
【问题讨论】:
-
以下是有关如何创建 StackOverflow sn-p 的说明:stackoverflow.blog/2014/09/16/…
-
我创建了一个 git 存储库,其中包含您需要查看的代码:github.com/Waelos/react-url-manual-modification
-
谢谢@AjeetShah :-)
-
我分叉了你的仓库并提出了拉取请求。 Forked repo。 solution-2和solution-1**,有2个分支。
标签: reactjs react-router