reactjs - 为什么当窗口位置改变时反应路由器开关不起作用?
问题描述
当我使用 Redirects、Navlinks 或其他图书馆工作人员时,React 路由器开关工作正常。
问题出在函数loadOrderPage中。当它被触发时,窗口位置可以更改,但页面不会根据 react-router 切换规则重新呈现,因此“/order”的组件在此功能完成后不会呈现。
这是我的简单反应类
现场工作示例:https ://codesandbox.io/s/delicate-wildflower-sdvd4?file=/src/App.js
import React from "react";
import {
BrowserRouter as Router,
Redirect,
Route,
Switch,
} from "react-router-dom";
import Startpage from "./components/startpage";
import Orderpage from "./components/orderpage";
import { withRouter } from "react-router";
class App extends React.Component {
.......
loadOrderPage = () => {
this.props.history.push("/order");
};
render() {
return (
<Router>
<Switch>
<Route path="/order">
<Orderpage />
</Route>
<Route path="/">
<Startpage/>
</Route>
</Switch>
</Router>
);
}
}
export default withRouter(App);
怎么了?我希望能够更改函数中的窗口位置并等待反应路由器在切换规则下呈现正确的组件。可能有更合适的方法吗?
解决方案
您不能在 yourindex.js
和 your中定义两个App.js
。从<Router></Router>
您的App.js
.
确保添加exact
到您的<Route />
.
<Route exact path="/order">
<Orderpage />
</Route>
<Route exact path="/">
<Startpage/>
</Route>
推荐阅读
- angular - 如何更新 Angular 项目中的 README.md 文件?
- apache-spark - 如何设置一个微批次的最大行数?
- python-3.x - 决定机器人是否在聊天室或 PM 中响应
- google-cloud-platform - 如何将默认 gcp 服务帐户设置为云作曲家
- laravel-5 - 如何仅在刀片中为空、零或空时隐藏表格部分,
- swift - 如何创建一个提取来总结属性之间的差异
- jquery - 如何在我的输入字段中将数字限制为 3?
- javascript - 尽管 observables 没有改变,但 MobX 在读取时完全重新计算?
- ruby - 如何使用 Ruby 将值填充到现有 PDF 中存在的输入元素?
- java - Java - 何时使用 JSR223 脚本执行基于 Java 的语言