在我的 React 应用程序中,从 Home 导航到子页面然后点击后退按钮后,React<Router>在其内部状态中显示与其传递的道具不匹配的位置,并且地址栏中当前显示的 URL 显示history不正确<Route>
do的内容发生了<Route>变化;数据由位置更改 Redux 操作更新。显示<Route>显示新数据,但它是错误的<Route>。
该应用程序的基本结构是:
<Root> (custom)
<Provider> (react-redux)
<ConnectedRouter> (connected-react-router)
<App> (custom)
<Switch> (react-router-dom)
<Route path="/" exact /> (react-router-dom)
<Route path="/quality:q" /> (react-router-dom)
最初我们导航到根目录并<Route path="/>正确显示。我们点击一个链接,正确地把我们带到<Route path="/quality/:q" />. 从那里我们回击浏览器,URL 更改为/但<Route path="/quality:q" />仍显示,但它不应该再显示了。
Redux devtools 显示了这个渲染树,我包含了一些我们明确使用的关键组件。
<Root> (custom)
<Provider> (react-redux)
<ConnectedRouter> (connected-react-router)
<Router> (injected)
<Context.Provider> (injected)
<App> (custom)
<Switch> (react-router-dom)
<Route path="/" exact /> (react-router-dom)
<Route path="/quality:q" /> (react-router-dom)
当处于这种不正确的状态时,一切<ConnectedRouter>都是正确的。<ConnectedRouter>有一个单一的道具,history它具有正确的位置,即根。
紧接其<Router>下方的是不匹配的。它有一个可以的history道具,但它的location状态陈旧,显示旧网址。
当错误的位置数据被上下文传递给<Route>s 时,他们会从他们的locationprop 中检查匹配的<Router>陈旧状态的路径。结果,<Route>呈现错误。
我无法弄清楚我做了什么导致这种不匹配。这都是简单的路线,并<Link>为从主页到子页面和返回的所有链接使用组件。
有没有人以前见过这个和/或可以指出我如何解决这个问题的方向?
