reactjs - 如何调试反应路由器未在 url 更改时加载组件
问题描述
我正在使用 react-router-dom 版本 4.3.1 单击链接后,URL 会更改,但不会呈现 React 组件(实际上调试器不会在我的代码中的任何位置停止)。我已经尝试过使用withComponent
andexact
关键字,但效果不佳。在以下两个解决方案中提到:
React router 更改 url 但不查看和
react route 使用 browserhistory 更改 url 但没有任何反应
它唯一有效的时间是使用刷新按钮刷新页面时。我正在将路由器加载到以下root
元素中index.js
:
ReactDOM.render(<AppRouter />, document.getElementById("root"));
AppRouter 有这个代码:
export const AppRouter = () => {
return (
<>
<HashRouter>
<div>
<Switch>
<Route path="/page1" component={Page1} />
<Route path="/page1" component={withRouter(Page2)} /> //still doesn't work
<Route exact path="/" component={Home} />
</Switch>
</div>
</HashRouter>
</>
)}
然后在我的页面中,我有:
<Router>
<div>
<Link to={'/page1'}>Page 1</Link>
<Link to={'/page2'}>Page 2</Link>
</div>
</Router>
有趣的是它正在工作,但是在我改变了组件的加载顺序之后,它停止了工作。我该如何调试呢?谢谢。
解决方案
将路由器嵌套在路由器中可能会导致此类问题。单击 后,<Link>
您会更新顶部<Router>
元素中的历史堆栈,而不是<HashRouter>
. 我认为如果你删除内部的<Router>
每一件事都应该开始工作。
export const AppRouter = () => {
return (
<>
<HashRouter>
<div>
<Link to={"/page1"}>Page 1</Link>
<Link to={"/page2"}>Page 2</Link>
</div>
<div>
<Switch>
<Route path="/page1" component={Page1} />
<Route path="/page1" component={withRouter(Page2)} /> //still
doesn't work
<Route exact path="/" component={Home} />
</Switch>
</div>
</HashRouter>
</>
);
};
推荐阅读
- docker - 詹金斯,在 Docker 中运行作业
- java - 使用 spring 集成时更新 Rabbitmq 交换类型
- reactjs - React Redux - 具有互斥选项的选择下拉列表
- nuxt.js - Nuxt 无法加载手写笔文件
- java - 如果我将加密的 html 文件解析为字符串,我能以某种方式从中获取文本吗?
- javascript - dialogflow 内联编辑器可以处理多个不同的功能吗?
- sql - 如何将时间戳插入postgreSQL数据库
- nvidia - Debian 大黄蜂问题
- eclipse - Javadoc 未正确配置
- vb.net - 在 VB.NET 中使用或不使用 LINQ 格式化 DataTable 中的数据