【问题标题】:Router location doesn't finish updating after history.push()在 history.push() 之后路由器位置没有完成更新
【发布时间】: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" }} />
  • 有或没有推送选项
  • withRouteruseLocation()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


    【解决方案1】:

    问题是由于某些包/脚本版本之间的某些不兼容造成的,如问题正文中所述。

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 2019-11-04
      • 2018-02-23
      • 2022-01-14
      • 2021-02-13
      • 2019-08-03
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      相关资源
      最近更新 更多