【发布时间】:2020-08-08 22:10:09
【问题描述】:
我正在使用 react-router-dom 导航到我的应用程序中的不同页面。我整天都在测试东西,不同的场景最终得到以下结果:
- 我的目标路径无效,它应该将我重定向到主路径
- 我推送/替换历史记录
- 浏览器 URL 更新正常
- 但是位置没有完成更新,我最终陷入了这样的半生不熟的值(渲染中途停止):
location: {"action":"REPLACE","location":{"pathname":"/home","search":"","hash":"","state":null,"key":"ui1fiedd"}}
而正确的值是:
location={"pathname":"/home","search":"","hash":"","state":null,"key":"ui1fiedd"}
当我使用不同的方法时会发生这种情况:
- 致电
history.push(newPath) - 渲染
<Redirect to="/home" /> - 渲染
<Redirect to={{ pathname: "/home" }} /> - 有或没有推送选项
- 从
withRouter、useLocation()或Route render呼叫获取位置
我现在没有一个干净的测试用例,所有这些都在一个非常复杂和大的应用程序中。但这会敲响警钟吗?我肯定做错了什么,但是看了一天也看不到。
我的依赖是:
- “反应”:“^16.13.1”,
- "react-dom": "^16.13.1",
- "react-router-dom": "^5.1.2",
谢谢!
2020 年 8 月 9 日编辑
这看起来是一个包版本问题...我最近做了一些更新。认为这可能是问题所在,所以恢复了我的 package.json,运行 npm i 并认为我还好......
我刚刚擦除了我的模块 package-lock.json 并重新运行 npm i,现在一切都很好。
所以下面的过渡把事情搞砸了:
"@material-ui/core": "^4.9.8" >> "^4.11.0"
"history": "^4.10.1" >> "^5.0.0"
"react-helmet": "^5.2.1" >> "^6.1.0"
"react-router-dom": "^5.1.2" >> "^5.2.0"
"react-scripts": "^3.4.1" >> "3.4.1"
我应该更仔细地看一下这个 ^5.0.0 版本 :-)
请注意,在此过渡的同时,我也有非常奇怪的行为:
"react-tabulator": "^0.10.3" >> "^0.13.2"
某些包含制表符的页面根本无法加载。
【问题讨论】:
标签: node.js react-router react-router-dom